-
Notifications
You must be signed in to change notification settings - Fork 20
194 lines (188 loc) · 6.59 KB
/
Copy pathtest.yml
File metadata and controls
194 lines (188 loc) · 6.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
name: Test
on:
push:
jobs:
scheme-tests:
name: ${{ matrix.parameter_label || 'block-binary' }}-${{ matrix.scheme }}-${{ matrix.compiler }}-26.04
runs-on: ubuntu-latest
container:
image: ubuntu:26.04
strategy:
fail-fast: false
matrix:
scheme: [tfhe, bfv, clpx, ckks]
compiler: [gcc, clang]
# Non-TFHE schemes are tested with clang only to reduce the CI load.
exclude:
- scheme: bfv
compiler: gcc
- scheme: clpx
compiler: gcc
- scheme: ckks
compiler: gcc
include:
- scheme: tfhe
build_targets: test_common test_tfhe
test_dirs: common tfhe
- scheme: bfv
build_targets: test_bfv
test_dirs: bfv
- scheme: clpx
build_targets: test_clpx
test_dirs: clpx
- scheme: ckks
build_targets: test_ckks
test_dirs: ckks
# CLPX currently requires the 128-bit lvl1/lvl2 topology. Keep
# this explicit while the default block-binary configuration covers
# TFHE, BFV, and CKKS.
- scheme: clpx
compiler: clang
parameter_label: 128bit
parameter_flags: -DUSE_BLOCK_BINARY=OFF
- compiler: gcc
compiler_flags: -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc
# clang-22 is the newest clang in the Ubuntu 26.04 repositories;
# the plain "clang" metapackage still points at clang 21.
- compiler: clang
compiler_flags: -DCMAKE_CXX_COMPILER=clang++-22 -DCMAKE_C_COMPILER=clang-22
# Keep block-binary CKKS coverage above, and exercise the integer
# switching test separately with its required k=1 level topology.
- scheme: ckks-integer
compiler: clang
parameter_label: 128bit
parameter_flags: -DUSE_BLOCK_BINARY=OFF
compiler_flags: -DCMAKE_CXX_COMPILER=clang++-22 -DCMAKE_C_COMPILER=clang-22
build_targets: ckks_integer_multiplication
test_dirs: ckks
steps:
- name: Install libraries
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
git build-essential g++ libomp-dev libboost-dev cmake ninja-build
if [ "${{ matrix.compiler }}" = "clang" ]; then
DEBIAN_FRONTEND=noninteractive apt-get install -y \
clang-22 llvm-22 lld-22
fi
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
# Configure, build, and run in a single step: -march=native and the
# AVX-512 detection happen at configure time, so the binaries must be
# built and executed on the same machine.
- name: Build and run scheme tests
run: |
cmake . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_TEST=ON \
-DCMAKE_CXX_FLAGS_RELEASE="-O3" \
-DCMAKE_C_FLAGS_RELEASE="-O3" \
${{ matrix.compiler_flags }} \
${{ matrix.parameter_flags }}
cmake --build build --target ${{ matrix.build_targets }}
cd build
# CKKS CI intentionally runs only the normal lightweight test
# executables. Do not pass lvl6 keygen/run/all flags here; those
# generate full bootstrap artifacts and exceed the storage budget.
test/test.sh ${{ matrix.test_dirs }}
tfhe-concrete:
name: tfhe-concrete-gcc-26.04
runs-on: ubuntu-latest
container:
image: ubuntu:26.04
steps:
- name: Install libraries
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
git build-essential g++ libomp-dev libboost-dev cmake ninja-build
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build and test TFHE concrete parameters
run: |
cmake . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_TEST=ON \
-DUSE_BLOCK_BINARY=OFF \
-DUSE_CONCRETE=ON
cmake --build build --target test_tfhe
cd build
test/test.sh tfhe
tfhe-128bit:
name: tfhe-128bit-gcc-26.04
runs-on: ubuntu-latest
container:
image: ubuntu:26.04
steps:
- name: Install libraries
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
git build-essential g++ libomp-dev libboost-dev cmake ninja-build
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build and test TFHE 128-bit parameters
run: |
cmake . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_TEST=ON \
-DUSE_BLOCK_BINARY=OFF
cmake --build build --target test_tfhe
cd build
test/test.sh tfhe
tfhe-raintt:
name: tfhe-raintt-gcc-26.04
runs-on: ubuntu-latest
container:
image: ubuntu:26.04
steps:
- name: Install libraries
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
git build-essential g++ libomp-dev libboost-dev cmake ninja-build
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build and test RAINTT
run: |
cmake . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_TEST=ON \
-DUSE_COMPRESS=ON
cmake --build build --target raintt trlwerainttenc gatebootstrappingtlwe2tlweraintt
build/test/common/raintt
build/test/tfhe/trlwerainttenc
build/test/tfhe/gatebootstrappingtlwe2tlweraintt
tutorial:
name: tutorial-128bit-gcc-26.04
runs-on: ubuntu-latest
container:
image: ubuntu:26.04
steps:
- name: Install libraries
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
git build-essential g++ libomp-dev libboost-dev cmake ninja-build
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build and run tutorial
run: |
cmake . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_TUTORIAL=ON \
-DUSE_BLOCK_BINARY=OFF
cmake --build build
echo "12345" | ./build/tutorial/client
echo "54321" | ./build/tutorial/cloud
./build/tutorial/verify