Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
076eb8c
Update `c-kzg-4844` git hash
belijzajac Feb 11, 2023
0e102a0
Suppress the "detached head" warning
belijzajac Feb 11, 2023
2994215
Update the patch
belijzajac Feb 11, 2023
c296678
Export missing `compute_kzg_proof` method
belijzajac Feb 12, 2023
76955cf
Update `c-kzg-4844` git hash
belijzajac Feb 13, 2023
4e42e58
Update the patch
belijzajac Feb 13, 2023
d391075
Refactor test scripts and hook up mcl on the missing bindings
belijzajac Feb 14, 2023
1272216
Export missing `compute_kzg_proof` method
belijzajac Feb 14, 2023
9b400c1
Reformat CI scripts
belijzajac Feb 14, 2023
14431df
ckzg native libs aren't kept, and neither should mcl libs
belijzajac Feb 14, 2023
62bc31f
Update mainnet and minimal trusted setups
belijzajac Feb 14, 2023
51f2e12
blst is only needed for the header file
belijzajac Feb 15, 2023
387ba87
Revert "Update mainnet and minimal trusted setups"
belijzajac Feb 18, 2023
6dae188
Add benchmarks for mcl
belijzajac Feb 19, 2023
a703097
Integrate Go binding
belijzajac Feb 20, 2023
3e7fe5d
Go binding's tests currently fail under mcl backend
belijzajac Feb 21, 2023
778f1ca
Hook up C tests
belijzajac Feb 22, 2023
3f5d545
Fix Clippy errors
belijzajac Feb 22, 2023
f035e2b
Prefer git patches to sed commands because the latter doesn't alert u…
belijzajac Feb 25, 2023
c3828b9
Hook up mcl on C tests
belijzajac Feb 27, 2023
27e3281
Add proper error reporting and update git patch
belijzajac Feb 27, 2023
22a3c24
Fix git patch trailing space warnings
belijzajac Feb 28, 2023
647cc51
Fix undefined reference to ceil
belijzajac Feb 28, 2023
7ebb051
Switch to workspace, switch to git ssz-rs dependency to not use yanke…
nazar-pc Feb 28, 2023
d859ef0
Fix compilation after ssz-rs dependency upgrade
nazar-pc Feb 28, 2023
55e196c
Fix `build.rs` files to work properly under workspace and not write t…
nazar-pc Feb 28, 2023
ad15a6b
Apply or suppress clippy suggestions
nazar-pc Feb 28, 2023
34cdcbc
Put `next_power_of_two` back with correct feature flag
nazar-pc Feb 28, 2023
934c510
Fix path to `blst_from_scratch.a` and `mcl_rust.a`
nazar-pc Feb 28, 2023
069c9ab
Move bench profile settings to the workspace, remove default values a…
nazar-pc Mar 1, 2023
66de335
More idiomatic Rust
nazar-pc Mar 1, 2023
b2a3e12
Compilation fixes and change to workspace (#192)
belijzajac Mar 1, 2023
667d221
More idiomatic Rust (#194)
belijzajac Mar 2, 2023
c58775d
Check formatting
nazar-pc Mar 2, 2023
70e898e
Check formatting (#196)
belijzajac Mar 2, 2023
6ac6eda
Fix clippy
belijzajac Mar 2, 2023
b0257e3
Scripts that patch bindings no longer depend on sed
belijzajac Mar 1, 2023
1266cdd
Remove unused dependency
nazar-pc Mar 2, 2023
410ecaa
2021 edition
nazar-pc Mar 3, 2023
9e97824
2021 edition (#197)
belijzajac Mar 3, 2023
1344753
Make `blst-from-scratch` compilable to WASM
nazar-pc Mar 3, 2023
174fb18
Replace `is_power_of_two`, `next_power_of_two` and `min_u64` utility …
nazar-pc Mar 3, 2023
c5cd349
Add wasm32 checks to CI
nazar-pc Mar 3, 2023
dd505f3
Remove optional `eip-4844` feature and make most of its API available…
nazar-pc Mar 6, 2023
6e3b48a
Wasm support (#198)
belijzajac Mar 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 144 additions & 120 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,131 +2,155 @@ name: Benchmarks

on: [push]

env:
C_KZG_4844_GIT_HASH: '1493f2bf2fce6b61f654a314a4ba136fd3b7a277'

jobs:
benchmarks:

runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-11]

steps:
- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: clippy, rustfmt

- name: "[arkworks] Benchmark without parallelization"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path Arkworks/Cargo.toml

- name: "[arkworks] Benchmark with parallelization"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path Arkworks/Cargo.toml --features parallel

- name: "[zkcrypto] Benchmark without parallelization"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path zkcrypto/Cargo.toml

- name: "[zkcrypto] Benchmark with parallelization"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path zkcrypto/Cargo.toml --features parallel

- name: "[blst-from-scratch] Benchmark"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path blst-from-scratch/Cargo.toml

- name: "[blst-from-scratch] Benchmark (parallel)"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path blst-from-scratch/Cargo.toml --features parallel

- name: "[blst-from-scratch] Benchmark (c-kzg-4844)"
if: matrix.os == 'ubuntu-latest'
run: |
cd blst-from-scratch && bash run-c-kzg-4844-benches.sh

- name: "[blst-from-scratch] Benchmark (c-kzg-4844 parallel)"
if: matrix.os == 'ubuntu-latest'
run: |
cd blst-from-scratch && bash run-c-kzg-4844-benches.sh -parallel

- name: "[ckzg] Build native libs for Linux"
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install libomp-dev
echo "LIBOMP_PATH=$(find /usr/lib/llvm* -name libiomp5.so | head -n 1)" >> $GITHUB_ENV
echo "OMP_NUM_THREADS=$(nproc)" >> $GITHUB_ENV
cd ckzg && bash build.sh

- name: "[ckzg] Build native libs for MacOS"
if: matrix.os == 'macos-11'
run: |
brew install libomp gnu-sed
ln -s /usr/local/opt/libomp/lib/libomp.dylib /usr/local/lib
ln -s /usr/local/opt/libomp/include/omp.h /usr/local/include
echo "LIBOMP_PATH=/usr/local/lib/libomp.dylib" >> $GITHUB_ENV
echo "OMP_NUM_THREADS=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
cd ckzg && bash build.sh

- name: "[ckzg] Setup Env"
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
run: |
if [[ -z "$LIBOMP_PATH" ]]; then
echo "FAIL: LLVM OpenMP runtime was not found"
exit 1
fi
echo "RUSTFLAGS=-C link-arg="$LIBOMP_PATH"" >> $GITHUB_ENV

- name: "[ckzg] Benchmark without parallelization"
uses: actions-rs/cargo@v1
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
with:
command: bench
args: --manifest-path ckzg/Cargo.toml

- name: "[ckzg] Benchmark with parallelization"
uses: actions-rs/cargo@v1
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
with:
command: bench
args: --manifest-path ckzg/Cargo.toml --features parallel

- name: "[ckzg] Unset Env"
run: |
echo "RUSTFLAGS=" >> $GITHUB_ENV
echo "LIBOMP_PATH=" >> $GITHUB_ENV

- name: "[mcl10-rust] Build mcl for Linux"
if: matrix.os == 'ubuntu-latest'
run: |
cd mcl/kzg && bash build.sh

- name: "[mcl10-rust] Run benches without parallel"
if: matrix.os == 'ubuntu-latest'
run: |
cargo bench --manifest-path mcl/kzg-bench/Cargo.toml

- name: "[mcl10-rust] Run benches with parallel"
if: matrix.os == 'ubuntu-latest'
run: |
cargo bench --manifest-path mcl/kzg-bench/Cargo.toml --features mcl_rust/parallel

- uses: actions-rs/cargo@v1
with:
command: fmt
args: --manifest-path kzg-bench/Cargo.toml
- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: clippy, rustfmt

# 1st team #########################################################

- name: "[arkworks] Benchmark"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path Arkworks/Cargo.toml

- name: "[arkworks] Benchmark (parallel)"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path Arkworks/Cargo.toml --features parallel

# 2nd team #########################################################

- name: "[zkcrypto] Benchmark"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path zkcrypto/Cargo.toml

- name: "[zkcrypto] Benchmark (parallel)"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path zkcrypto/Cargo.toml --features parallel

# 3rd team #########################################################

- name: "[blst-from-scratch] Benchmark"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path blst-from-scratch/Cargo.toml

- name: "[blst-from-scratch] Benchmark (parallel)"
uses: actions-rs/cargo@v1
with:
command: bench
args: --manifest-path blst-from-scratch/Cargo.toml --features parallel

- name: "[blst-from-scratch] Benchmark (c-kzg-4844)"
if: matrix.os == 'ubuntu-latest'
run: |
cd blst-from-scratch && bash run-c-kzg-4844-benches.sh

- name: "[blst-from-scratch] Benchmark (c-kzg-4844 parallel)"
if: matrix.os == 'ubuntu-latest'
run: |
cd blst-from-scratch && bash run-c-kzg-4844-benches.sh --parallel

# 4th team #########################################################

- name: "[ckzg] Build native libs for Linux"
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install libomp-dev
echo "LIBOMP_PATH=$(find /usr/lib/llvm* -name libiomp5.so | head -n 1)" >> $GITHUB_ENV
echo "OMP_NUM_THREADS=$(nproc)" >> $GITHUB_ENV
cd ckzg && bash build.sh

- name: "[ckzg] Build native libs for MacOS"
if: matrix.os == 'macos-11'
run: |
brew install libomp gnu-sed
ln -s /usr/local/opt/libomp/lib/libomp.dylib /usr/local/lib
ln -s /usr/local/opt/libomp/include/omp.h /usr/local/include
echo "LIBOMP_PATH=/usr/local/lib/libomp.dylib" >> $GITHUB_ENV
echo "OMP_NUM_THREADS=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
cd ckzg && bash build.sh

- name: "[ckzg] Set environment variables"
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
run: |
if [[ -z "$LIBOMP_PATH" ]]; then
echo "FAIL: LLVM OpenMP runtime was not found"
exit 1
fi
echo "RUSTFLAGS=-C link-arg="$LIBOMP_PATH"" >> $GITHUB_ENV

- name: "[ckzg] Benchmark"
uses: actions-rs/cargo@v1
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
with:
command: bench
args: --manifest-path ckzg/Cargo.toml

- name: "[ckzg] Benchmark (parallel)"
uses: actions-rs/cargo@v1
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-11'
with:
command: bench
args: --manifest-path ckzg/Cargo.toml --features parallel

- name: "[ckzg] Unset environment variables"
run: |
echo "RUSTFLAGS=" >> $GITHUB_ENV
echo "LIBOMP_PATH=" >> $GITHUB_ENV

# 5th team ###########################################################

- name: "[mcl10-rust] Build native libs for Linux"
if: matrix.os == 'ubuntu-latest'
run: |
cd mcl/kzg && bash build.sh

- name: "[mcl10-rust] Benchmark"
if: matrix.os == 'ubuntu-latest'
run: |
cargo bench --manifest-path mcl/kzg-bench/Cargo.toml

- name: "[mcl10-rust] Benchmark (parallel)"
if: matrix.os == 'ubuntu-latest'
run: |
cargo bench --manifest-path mcl/kzg-bench/Cargo.toml --features mcl_rust/parallel

- name: "[mcl10-rust] Benchmark (c-kzg-4844)"
if: matrix.os == 'ubuntu-latest'
run: |
cd mcl/kzg && bash run-c-kzg-4844-benches.sh

- name: "[mcl10-rust] Benchmark (c-kzg-4844 parallel)"
if: matrix.os == 'ubuntu-latest'
run: |
cd mcl/kzg && bash run-c-kzg-4844-benches.sh --parallel

# Common ###########################################################

- uses: actions-rs/cargo@v1
with:
command: fmt
args: --manifest-path kzg-bench/Cargo.toml
Loading