mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-08 22:28:01 -05:00
This new workflow can trigger all the required benchmarks needed to populate benchmarks tables in documentation. It also can generate SVG tables and store them as artifacts. Optionally, it can open a pull-request to update the current tables in documentation.
224 lines
9.6 KiB
YAML
224 lines
9.6 KiB
YAML
# Run CPU latencies benchmarks AWS VMs and return parsed results to Slab CI bot.
|
|
name: benchmark_cpu_weekly
|
|
|
|
on:
|
|
schedule:
|
|
# Weekly schedules are separated in two groups to avoid spawning too many the machines at once thus risking resource shortages.
|
|
# Group 1
|
|
# -------
|
|
# Weekly benchmarks will be triggered each Saturday at 1a.m.
|
|
- cron: '0 1 * * 6'
|
|
# Group 2
|
|
# -------
|
|
# Weekly benchmarks will be triggered each Sunday at 3a.m.
|
|
- cron: '0 3 * * 0'
|
|
|
|
# Quarterly benchmarks will be triggered right before the end of the quarter, the 25th of the current month at 4a.m.
|
|
# These benchmarks are far longer to execute, hence the reason to run them only four times a year.
|
|
- cron: '0 4 25 MAR,JUN,SEP,DEC *'
|
|
|
|
permissions: {}
|
|
|
|
# zizmor: ignore[concurrency-limits] only GitHub can trigger this workflow
|
|
|
|
jobs:
|
|
prepare-inputs:
|
|
name: benchmark_cpu_weekly/prepare-inputs
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
is_weekly_bench_group_1: ${{ steps.check_bench_group_1.outputs.is_weekly_bench_group_1 }}
|
|
is_weekly_bench_group_2: ${{ steps.check_bench_group_2.outputs.is_weekly_bench_group_2 }}
|
|
is_quarterly_bench: ${{ steps.check_quarterly_bench.outputs.is_quarterly_bench }}
|
|
op_flavor: ${{ steps.set_op_flavor.outputs.op_flavor }}
|
|
precisions_set: ${{ steps.set_precisions_set.outputs.precisions_set }}
|
|
steps:
|
|
- name: Check is weekly bench group 1
|
|
id: check_bench_group_1
|
|
run: | # zizmor: ignore[template-injection] this env variable is safe
|
|
echo "is_weekly_bench_group_1=${{ github.event.schedule == '0 1 * * 6' }}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Check is weekly bench group 2
|
|
id: check_bench_group_2
|
|
run: | # zizmor: ignore[template-injection] this env variable is safe
|
|
echo "is_weekly_bench_group_2=${{ github.event.schedule == '0 3 * * 0' }}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Check is quarterly bench
|
|
id: check_quarterly_bench
|
|
run: | # zizmor: ignore[template-injection] this env variable is safe
|
|
echo "is_quarterly_bench=${{ github.event.schedule == '0 4 25 MAR,JUN,SEP,DEC *' }}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Weekly benchmarks
|
|
if: steps.check_bench_group_1.outputs.is_weekly_bench_group_1 == 'true' ||
|
|
steps.check_bench_group_2.outputs.is_weekly_bench_group_2 == 'true'
|
|
run: |
|
|
echo "OP_FLAVOR=default" >> "${GITHUB_ENV}"
|
|
echo "PRECISIONS_SET=false" >> "${GITHUB_ENV}"
|
|
|
|
- name: Quarterly benchmarks
|
|
if: steps.check_quarterly_bench.outputs.is_quarterly_bench == 'true'
|
|
run: |
|
|
echo "OP_FLAVOR=\"default,unchecked\"" >> "${GITHUB_ENV}"
|
|
echo "PRECISIONS_SET=true" >> "${GITHUB_ENV}"
|
|
|
|
- name: Set operation flavor output
|
|
id: set_op_flavor
|
|
run: | # zizmor: ignore[template-injection] this env variable is safe
|
|
echo "op_flavor=${{ env.OP_FLAVOR }}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Set bit precisions output
|
|
id: set_precisions_set
|
|
run: | # zizmor: ignore[template-injection] this env variable is safe
|
|
echo "precisions_set=${{ env.PRECISIONS_SET }}" >> "${GITHUB_OUTPUT}"
|
|
|
|
run-benchmarks-integer:
|
|
name: benchmark_cpu_weekly/run-benchmarks-integer
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& (needs.prepare-inputs.outputs.is_weekly_bench_group_1 == 'true' || needs.prepare-inputs.outputs.is_quarterly_bench == 'true')
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: integer,signed_integer, integer_compression
|
|
op_flavor: ${{ needs.prepare-inputs.outputs.op_flavor }}
|
|
precisions_set: ${{ needs.prepare-inputs.outputs.precisions_set }}
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-integer-zk-pke:
|
|
name: benchmark_cpu_weekly/run-benchmarks-integer-zk-pke
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_1 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: integer_zk
|
|
additional_file_to_parse: pke_zk_crs_sizes.csv
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-hlapi-erc20:
|
|
name: benchmark_cpu_weekly/run-benchmarks-hlapi-erc20
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_2 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: hlapi_erc20
|
|
additional_file_to_parse: erc20_pbs_count.csv
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-hlapi-dex:
|
|
name: benchmark_cpu_weekly/run-benchmarks-hlapi-dex
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_1 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: hlapi_dex
|
|
additional_file_to_parse: dex_swap_request_update_dex_balance_pbs_count.csv,dex_swap_request_finalize_pbs_count.csv,dex_swap_claim_prepare_pbs_count.csv,dex_swap_claim_update_dex_balance_pbs_count.csv
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-core-crypto:
|
|
name: benchmark_cpu_weekly/run-benchmarks-core-crypto
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_1 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: ks,pbs,pbs128,ks_pbs
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-shortint:
|
|
name: benchmark_cpu_weekly/run-benchmarks-shortint
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& (needs.prepare-inputs.outputs.is_weekly_bench_group_2 == 'true' || needs.prepare-inputs.outputs.is_quarterly_bench == 'true')
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
op_flavor: ${{ needs.prepare-inputs.outputs.op_flavor }}
|
|
command: shortint
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-boolean:
|
|
name: benchmark_cpu_weekly/run-benchmarks-boolean
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_2 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: boolean
|
|
additional_recipe: measure_boolean_key_sizes
|
|
additional_file_to_parse: boolean_key_sizes.csv
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-tfhe-zk-pok:
|
|
name: benchmark_cpu_weekly/run-benchmarks-tfhe-zk-pok
|
|
if: github.repository == 'zama-ai/tfhe-rs'
|
|
&& needs.prepare-inputs.outputs.is_weekly_bench_group_1 == 'true'
|
|
needs: prepare-inputs
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
with:
|
|
command: tfhe_zk_pok
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|