forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Squashed 'src/secp256k1/' changes from 0cdc758a56..7054b5ebb9
7054b5ebb9 Clear warnings c94ed8bbb8 WIP: Silent merge conflicts 4258da6b98 batch: Generate graphs for batch verification speed up d19d6e7b48 batch, extrakeys: Add benchmark for batch verify and `tweak_add_check` cd6eed652a batch: Add tests for `batch_add_*` APIs 990dc9f09c batch,ecmult: Add tests for core batch APIs and `strauss_batch` refactor 3740b6b960 batch: Add API usage example b5765680d1 batch: Add `batch_add_*` APIs fbefddd908 batch, ecmult: Add `batch_verify` API and refactor `strauss_batch` 6dfd31dea4 batch: Add `create` and `destroy` APIs 1455f0999f batch: Initialize an experimental batch module 8deef00b33 Merge bitcoin-core/secp256k1#1634: Fix some misspellings 39705450eb Fix some misspellings ec329c2501 Merge bitcoin-core/secp256k1#1633: release cleanup: bump version after 0.6.0 c97059f594 release cleanup: bump version after 0.6.0 git-subtree-dir: src/secp256k1 git-subtree-split: 7054b5ebb937572f4574692051005cb2e9613ffb
- Loading branch information
Showing
40 changed files
with
2,839 additions
and
77 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
#!/bin/sh | ||
|
||
set -e | ||
set -x | ||
|
||
export LC_ALL=C | ||
|
||
# Start persistent wineserver if necessary. | ||
# This speeds up jobs with many invocations of wine (e.g., ./configure with MSVC) tremendously. | ||
case "$WRAPPER_CMD" in | ||
*wine*) | ||
# This is apparently only reliable when we run a dummy command such as "hh.exe" afterwards. | ||
wineserver -p && wine hh.exe | ||
;; | ||
esac | ||
|
||
env >> test_env.log | ||
|
||
$CC -v || true | ||
valgrind --version || true | ||
$WRAPPER_CMD --version || true | ||
|
||
./autogen.sh | ||
|
||
./configure \ | ||
--enable-experimental="$EXPERIMENTAL" \ | ||
--with-test-override-wide-multiply="$WIDEMUL" --with-asm="$ASM" \ | ||
--with-ecmult-window="$ECMULTWINDOW" \ | ||
--with-ecmult-gen-precision="$ECMULTGENPRECISION" \ | ||
--enable-module-ecdh="$ECDH" --enable-module-recovery="$RECOVERY" \ | ||
--enable-module-schnorrsig="$SCHNORRSIG" \ | ||
--enable-module-batch="$BATCH" \ | ||
--enable-examples="$EXAMPLES" \ | ||
--with-valgrind="$WITH_VALGRIND" \ | ||
--host="$HOST" $EXTRAFLAGS | ||
|
||
# We have set "-j<n>" in MAKEFLAGS. | ||
make | ||
|
||
# Print information about binaries so that we can see that the architecture is correct | ||
file *tests* || true | ||
file bench* || true | ||
file .libs/* || true | ||
|
||
# This tells `make check` to wrap test invocations. | ||
export LOG_COMPILER="$WRAPPER_CMD" | ||
|
||
make "$BUILD" | ||
|
||
if [ "$BENCH" = "yes" ] | ||
then | ||
# Using the local `libtool` because on macOS the system's libtool has nothing to do with GNU libtool | ||
EXEC='./libtool --mode=execute' | ||
if [ -n "$WRAPPER_CMD" ] | ||
then | ||
EXEC="$EXEC $WRAPPER_CMD" | ||
fi | ||
{ | ||
$EXEC ./bench_ecmult | ||
$EXEC ./bench_internal | ||
$EXEC ./bench | ||
} >> bench.log 2>&1 | ||
fi | ||
|
||
if [ "$CTIMETEST" = "yes" ] | ||
then | ||
./libtool --mode=execute valgrind --error-exitcode=42 ./valgrind_ctime_test > valgrind_ctime_test.log 2>&1 | ||
fi | ||
|
||
# Rebuild precomputed files (if not cross-compiling). | ||
if [ -z "$HOST" ] | ||
then | ||
make clean-precomp | ||
make precomp | ||
fi | ||
|
||
# Shutdown wineserver again | ||
wineserver -k || true | ||
|
||
# Check that no repo files have been modified by the build. | ||
# (This fails for example if the precomp files need to be updated in the repo.) | ||
git diff --exit-code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Schnorrsig Batch Verification Speedup | ||
|
||
![Speedup over single verification](speedup-batch/schnorrsig-speedup-batch.png) | ||
|
||
# Tweak Pubkey Check Batch Verification Speedup | ||
|
||
![Speedup over single verification](speedup-batch/tweakcheck-speedup-batch.png) | ||
|
||
Build steps | ||
----------- | ||
To generate the above graphs on your local machine: | ||
|
||
$ cd doc/speedup-batch | ||
$ make | ||
$ make speedup-batch.png |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*.dat |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
schnorrsig_data = schnorrsig_batch.dat schnorrsig_single.dat | ||
tweak_data = tweak_batch.dat tweak_single.dat | ||
|
||
bench_output.txt: bench.sh | ||
SECP256K1_BENCH_ITERS=500000 ./bench.sh bench_output.txt | ||
|
||
schnorrsig_batch.dat: bench_output.txt | ||
cat bench_output.txt | grep -v "schnorrsig_batch_verify_1 " | awk '{ gsub(/ /,""); print }' | awk -F, 'match($$0, /schnorrsig_batch_verify_([0-9]+)/, arr) {print arr[1] " " $$3}' > schnorrsig_batch.dat | ||
|
||
schnorrsig_single.dat: bench_output.txt | ||
cat bench_output.txt | awk '{ gsub(/ /,""); print }' | awk -F, 'match($$0, /schnorrsig_verify/) {print $$3}' > schnorrsig_single.dat | ||
|
||
tweak_batch.dat: bench_output.txt | ||
cat bench_output.txt | grep -v "tweak_check_batch_verify_1 " | awk '{ gsub(/ /,""); print }' | awk -F, 'match($$0, /tweak_check_batch_verify_([0-9]+)/, arr) {print arr[1] " " $$3}' > tweak_batch.dat | ||
|
||
tweak_single.dat: bench_output.txt | ||
cat bench_output.txt | awk '{ gsub(/ /,""); print }' | awk -F, 'match($$0, /tweak_add_check/) {print $$3}' > tweak_single.dat | ||
|
||
speedup-batch.png: $(schnorrsig_data) $(tweak_data) plot.gp | ||
gnuplot plot.gp | ||
|
||
clean: | ||
rm *.log *.txt *.dat *.png |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
|
||
output_file=$1 | ||
cur_dir=$(pwd) | ||
|
||
cd ../../ | ||
echo "HEAD: $(git rev-parse --short HEAD)" > "$cur_dir/$output_file.log" | ||
make clean | ||
./autogen.sh | ||
./configure --enable-experimental --enable-module-batch --enable-module-schnorrsig >> "$cur_dir/$output_file.log" | ||
make -j | ||
./bench schnorrsig > "$cur_dir/$output_file" | ||
./bench extrakeys >> "$cur_dir/$output_file" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
Benchmark , Min(us) , Avg(us) , Max(us) | ||
|
||
schnorrsig_sign , 50.4 , 50.5 , 50.7 | ||
schnorrsig_verify , 89.1 , 89.2 , 89.3 | ||
schnorrsig_batch_verify_1 , 104.0 , 104.0 , 104.0 | ||
schnorrsig_batch_verify_2 , 89.0 , 89.1 , 89.1 | ||
schnorrsig_batch_verify_3 , 84.1 , 84.1 , 84.1 | ||
schnorrsig_batch_verify_4 , 81.5 , 81.5 , 81.5 | ||
schnorrsig_batch_verify_5 , 79.9 , 79.9 , 79.9 | ||
schnorrsig_batch_verify_7 , 78.0 , 78.1 , 78.3 | ||
schnorrsig_batch_verify_9 , 77.0 , 77.0 , 77.1 | ||
schnorrsig_batch_verify_11 , 76.2 , 76.3 , 76.3 | ||
schnorrsig_batch_verify_14 , 75.6 , 75.6 , 75.6 | ||
schnorrsig_batch_verify_17 , 75.2 , 75.2 , 75.2 | ||
schnorrsig_batch_verify_21 , 74.8 , 74.8 , 74.8 | ||
schnorrsig_batch_verify_26 , 74.5 , 74.6 , 74.9 | ||
schnorrsig_batch_verify_32 , 74.3 , 74.5 , 74.7 | ||
schnorrsig_batch_verify_39 , 74.1 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_47 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_57 , 74.5 , 74.5 , 74.5 | ||
schnorrsig_batch_verify_69 , 74.3 , 74.3 , 74.5 | ||
schnorrsig_batch_verify_83 , 74.1 , 74.1 , 74.2 | ||
schnorrsig_batch_verify_100 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_121 , 74.1 , 74.1 , 74.2 | ||
schnorrsig_batch_verify_146 , 73.9 , 73.9 , 74.0 | ||
schnorrsig_batch_verify_176 , 74.0 , 74.2 , 74.5 | ||
schnorrsig_batch_verify_212 , 73.9 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_255 , 74.0 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_307 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_369 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_443 , 73.9 , 74.1 , 74.3 | ||
schnorrsig_batch_verify_532 , 74.0 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_639 , 73.9 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_767 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_921 , 74.0 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_1106 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_1328 , 73.9 , 74.1 , 74.2 | ||
schnorrsig_batch_verify_1594 , 74.0 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_1913 , 74.0 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_2296 , 74.0 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_2756 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_3308 , 74.1 , 74.1 , 74.2 | ||
schnorrsig_batch_verify_3970 , 74.1 , 74.2 , 74.4 | ||
schnorrsig_batch_verify_4765 , 74.0 , 74.1 , 74.2 | ||
schnorrsig_batch_verify_5719 , 74.0 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_6863 , 74.0 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_8236 , 74.0 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_9884 , 74.0 , 74.1 , 74.3 | ||
schnorrsig_batch_verify_11861 , 74.0 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_14234 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_17081 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_20498 , 73.9 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_24598 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_29518 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_35422 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_42507 , 73.9 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_51009 , 73.9 , 74.1 , 74.3 | ||
schnorrsig_batch_verify_61211 , 73.9 , 73.9 , 74.0 | ||
schnorrsig_batch_verify_73454 , 73.9 , 74.0 , 74.3 | ||
schnorrsig_batch_verify_88145 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_105775 , 74.0 , 74.1 , 74.1 | ||
schnorrsig_batch_verify_126931 , 73.9 , 74.0 , 74.1 | ||
schnorrsig_batch_verify_152318 , 73.9 , 73.9 , 74.0 | ||
schnorrsig_batch_verify_182782 , 73.9 , 73.9 , 74.0 | ||
schnorrsig_batch_verify_219339 , 73.9 , 73.9 , 74.0 | ||
schnorrsig_batch_verify_263207 , 74.0 , 74.1 , 74.3 | ||
schnorrsig_batch_verify_315849 , 73.9 , 74.0 , 74.0 | ||
schnorrsig_batch_verify_379019 , 73.9 , 73.9 , 73.9 | ||
schnorrsig_batch_verify_454823 , 74.0 , 74.0 , 74.0 | ||
Benchmark , Min(us) , Avg(us) , Max(us) | ||
|
||
tweak_add_check , 64.7 , 64.7 , 65.0 | ||
tweak_check_batch_verify_1 , 69.7 , 69.8 , 69.8 | ||
tweak_check_batch_verify_2 , 57.2 , 57.2 , 57.3 | ||
tweak_check_batch_verify_3 , 52.0 , 52.1 , 52.2 | ||
tweak_check_batch_verify_4 , 49.4 , 49.5 , 49.5 | ||
tweak_check_batch_verify_5 , 47.9 , 47.9 , 47.9 | ||
tweak_check_batch_verify_7 , 46.1 , 46.1 , 46.2 | ||
tweak_check_batch_verify_9 , 45.2 , 45.2 , 45.4 | ||
tweak_check_batch_verify_11 , 44.5 , 44.6 , 44.6 | ||
tweak_check_batch_verify_14 , 43.9 , 43.9 , 43.9 | ||
tweak_check_batch_verify_17 , 43.5 , 43.5 , 43.5 | ||
tweak_check_batch_verify_21 , 43.1 , 43.1 , 43.1 | ||
tweak_check_batch_verify_26 , 42.8 , 42.8 , 42.8 | ||
tweak_check_batch_verify_32 , 42.5 , 42.6 , 42.6 | ||
tweak_check_batch_verify_39 , 42.3 , 42.4 , 42.4 | ||
tweak_check_batch_verify_47 , 42.2 , 42.2 , 42.2 | ||
tweak_check_batch_verify_57 , 42.1 , 42.2 , 42.3 | ||
tweak_check_batch_verify_69 , 42.0 , 42.1 , 42.1 | ||
tweak_check_batch_verify_83 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_100 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_121 , 42.1 , 42.1 , 42.1 | ||
tweak_check_batch_verify_146 , 42.0 , 42.0 , 42.0 | ||
tweak_check_batch_verify_176 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_212 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_255 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_307 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_369 , 41.9 , 42.0 , 42.1 | ||
tweak_check_batch_verify_443 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_532 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_639 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_767 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_921 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_1106 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_1328 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_1594 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_1913 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_2296 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_2756 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_3308 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_3970 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_4765 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_5719 , 41.9 , 42.0 , 42.1 | ||
tweak_check_batch_verify_6863 , 42.0 , 42.0 , 42.0 | ||
tweak_check_batch_verify_8236 , 42.0 , 42.0 , 42.0 | ||
tweak_check_batch_verify_9884 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_11861 , 41.9 , 42.0 , 42.1 | ||
tweak_check_batch_verify_14234 , 41.9 , 42.0 , 42.0 | ||
tweak_check_batch_verify_17081 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_20498 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_24598 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_29518 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_35422 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_42507 , 41.8 , 41.8 , 41.9 | ||
tweak_check_batch_verify_51009 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_61211 , 41.8 , 41.8 , 41.8 | ||
tweak_check_batch_verify_73454 , 41.8 , 42.0 , 42.2 | ||
tweak_check_batch_verify_88145 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_105775 , 41.8 , 41.8 , 41.8 | ||
tweak_check_batch_verify_126931 , 41.8 , 41.9 , 41.9 | ||
tweak_check_batch_verify_152318 , 41.8 , 41.9 , 42.0 | ||
tweak_check_batch_verify_182782 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_219339 , 41.9 , 42.0 , 42.0 | ||
tweak_check_batch_verify_263207 , 41.9 , 42.0 , 42.1 | ||
tweak_check_batch_verify_315849 , 41.9 , 41.9 , 41.9 | ||
tweak_check_batch_verify_379019 , 41.9 , 41.9 , 42.0 | ||
tweak_check_batch_verify_454823 , 41.9 , 41.9 , 41.9 |
Oops, something went wrong.