@@ -3,6 +3,22 @@ name: coprocessor-benchmark-gpu
3
3
4
4
on :
5
5
workflow_dispatch :
6
+ inputs :
7
+ profile :
8
+ description : " Instance type"
9
+ required : true
10
+ type : choice
11
+ options :
12
+ - " l40 (n3-L40x1)"
13
+ - " 4-l40 (n3-L40x4)"
14
+ - " single-h100 (n3-H100x1)"
15
+ - " 2-h100 (n3-H100x2)"
16
+ - " 4-h100 (n3-H100x4)"
17
+ - " multi-h100 (n3-H100x8)"
18
+ - " multi-h100-nvlink (n3-H100x8-NVLink)"
19
+ - " multi-h100-sxm5 (n3-H100x8-SXM5)"
20
+ - " multi-h100-sxm5_fallback (n3-H100x8-SXM5)"
21
+
6
22
schedule :
7
23
# Weekly tests @ 1AM
8
24
- cron : " 0 1 * * 6"
17
33
RUST_BACKTRACE : " full"
18
34
RUST_MIN_STACK : " 8388608"
19
35
CHECKOUT_TOKEN : ${{ secrets.REPO_CHECKOUT_TOKEN || secrets.GITHUB_TOKEN }}
20
- PROFILE : " multi-h100-sxm5 (n3-H100x8-SXM5)"
36
+ PROFILE_SCHEDULED_RUN : " multi-h100-sxm5 (n3-H100x8-SXM5)"
21
37
BENCHMARK_TYPE : " ALL"
22
38
OPTIMIZATION_TARGET : " throughput"
23
39
BATCH_SIZE : " 5000"
@@ -40,15 +56,25 @@ jobs:
40
56
- name : Parse profile
41
57
id : parse_profile
42
58
run : |
59
+ if [[ ${{ github.event_name == 'workflow_dispatch' }} == true ]]; then
60
+ PROFILE_RAW="${{ inputs.profile }}"
61
+ else
62
+ PROFILE_RAW="${PROFILE_SCHEDULED_RUN}"
63
+ fi
43
64
# shellcheck disable=SC2001
44
- PROFILE_VAL=$(echo "${PROFILE }" | sed 's|\(.*\)[[:space:]](.*)|\1|')
65
+ PROFILE_VAL=$(echo "${PROFILE_RAW }" | sed 's|\(.*\)[[:space:]](.*)|\1|')
45
66
echo "profile=$PROFILE_VAL" >> "${GITHUB_OUTPUT}"
46
67
47
68
- name : Parse hardware name
48
69
id : parse_hardware_name
49
70
run : |
71
+ if [[ ${{ github.event_name == 'workflow_dispatch' }} == true ]]; then
72
+ PROFILE_RAW="${{ inputs.profile }}"
73
+ else
74
+ PROFILE_RAW="${PROFILE}"
75
+ fi
50
76
# shellcheck disable=SC2001
51
- PROFILE_VAL=$(echo "${PROFILE }" | sed 's|.*[[:space:]](\(.*\))|\1|')
77
+ PROFILE_VAL=$(echo "${PROFILE_RAW }" | sed 's|.*[[:space:]](\(.*\))|\1|')
52
78
echo "name=$PROFILE_VAL" >> "${GITHUB_OUTPUT}"
53
79
54
80
setup-instance :
@@ -130,6 +156,13 @@ jobs:
130
156
} >> "${GITHUB_ENV}"
131
157
working-directory : tfhe-rs/
132
158
159
+ - name : Setup Hyperstack dependencies
160
+ uses : ./tfhe-rs/.github/actions/gpu_setup
161
+ with :
162
+ cuda-version : ${{ matrix.cuda }}
163
+ gcc-version : ${{ matrix.gcc }}
164
+ github-instance : ${{ env.SECRETS_AVAILABLE == 'false' }}
165
+
133
166
- name : Check fhEVM and TFHE-rs repos
134
167
run : |
135
168
pwd
@@ -140,21 +173,14 @@ jobs:
140
173
run : git lfs checkout
141
174
working-directory : fhevm/
142
175
143
- - name : Setup Hyperstack dependencies
144
- uses : ./fhevm/.github/actions/gpu_setup
145
- with :
146
- cuda-version : ${{ matrix.cuda }}
147
- gcc-version : ${{ matrix.gcc }}
148
- github-instance : ${{ env.SECRETS_AVAILABLE == 'false' }}
149
-
150
176
- name : Install rust
151
177
uses : dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # zizmor: ignore[stale-action-refs] this action doesn't create releases
152
178
with :
153
179
toolchain : nightly
154
180
155
181
- name : Install cargo dependencies
156
182
run : |
157
- sudo apt-get install -y protobuf-compiler cmake pkg-config libssl-dev \
183
+ sudo apt-get install -y protobuf-compiler pkg-config libssl-dev \
158
184
libclang-dev docker-compose-v2 docker.io acl
159
185
sudo usermod -aG docker "$USER"
160
186
newgrp docker
@@ -181,9 +207,16 @@ jobs:
181
207
username : ${{ github.actor }}
182
208
password : ${{ secrets.GITHUB_TOKEN }}
183
209
210
+ - name : Login to Chainguard Registry
211
+ uses : docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
212
+ with :
213
+ registry : cgr.dev
214
+ username : ${{ secrets.CGR_USERNAME }}
215
+ password : ${{ secrets.CGR_PASSWORD }}
216
+
184
217
- name : Init database
185
218
run : make init_db
186
- working-directory : fhevm/coprocessor/fhevm-engine/coprocessor
219
+ working-directory : fhevm/coprocessor/fhevm-engine/tfhe-worker
187
220
188
221
- name : Use Node.js
189
222
uses : actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
@@ -203,8 +236,12 @@ jobs:
203
236
204
237
- name : Profile erc20 no-cmux benchmark on GPU
205
238
run : |
206
- BENCHMARK_BATCH_SIZE="${BATCH_SIZE}" FHEVM_DF_SCHEDULE="${SCHEDULING_POLICY}" BENCHMARK_TYPE="LATENCY" OPTIMIZATION_TARGET="${OPTIMIZATION_TARGET}" make -e "profile_erc20_gpu"
207
- working-directory : fhevm/coprocessor/fhevm-engine/coprocessor
239
+ BENCHMARK_BATCH_SIZE="${BATCH_SIZE}" \
240
+ FHEVM_DF_SCHEDULE="${SCHEDULING_POLICY}" \
241
+ BENCHMARK_TYPE="THROUGHPUT_200" \
242
+ OPTIMIZATION_TARGET="${OPTIMIZATION_TARGET}" \
243
+ make -e "profile_erc20_gpu"
244
+ working-directory : fhevm/coprocessor/fhevm-engine/tfhe-worker
208
245
209
246
- name : Get nsys profile name
210
247
id : nsys_profile_name
@@ -215,7 +252,7 @@ jobs:
215
252
REPORT_NAME : ${{ steps.nsys_profile_name.outputs.profile }}
216
253
run : |
217
254
mv report1.nsys-rep ${{ env.REPORT_NAME }}
218
- working-directory : fhevm/coprocessor/fhevm-engine/coprocessor
255
+ working-directory : fhevm/coprocessor/fhevm-engine/tfhe-worker
219
256
220
257
- name : Upload profile artifact
221
258
env :
@@ -228,12 +265,12 @@ jobs:
228
265
- name : Run latency benchmark on GPU
229
266
run : |
230
267
BENCHMARK_BATCH_SIZE="${BATCH_SIZE}" FHEVM_DF_SCHEDULE="${SCHEDULING_POLICY}" BENCHMARK_TYPE="LATENCY" OPTIMIZATION_TARGET="${OPTIMIZATION_TARGET}" make -e "benchmark_${BENCHMARKS}_gpu"
231
- working-directory : fhevm/coprocessor/fhevm-engine/coprocessor
268
+ working-directory : fhevm/coprocessor/fhevm-engine/tfhe-worker
232
269
233
270
- name : Run throughput benchmarks on GPU
234
271
run : |
235
272
BENCHMARK_BATCH_SIZE="${BATCH_SIZE}" FHEVM_DF_SCHEDULE="${SCHEDULING_POLICY}" BENCHMARK_TYPE="THROUGHPUT_200" OPTIMIZATION_TARGET="${OPTIMIZATION_TARGET}" make -e "benchmark_${BENCHMARKS}_gpu"
236
- working-directory : fhevm/coprocessor/fhevm-engine/coprocessor
273
+ working-directory : fhevm/coprocessor/fhevm-engine/tfhe-worker
237
274
238
275
- name : Parse results
239
276
run : |
0 commit comments