From 6554684c0e7a51a102d0d8c91d2a11abb362598d Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Mon, 12 Aug 2024 21:38:20 +0800 Subject: [PATCH] Update AIMer implementations (#350) * add skiplist entries for new aimer implementations * remove old aimer benchmarks * add AIMer benchmarks * add missing aimer-128f benchmarks * track correct version of mupq --- benchmarks.csv | 48 ++++++++++++++++++++++++++++++++++++------------ benchmarks.md | 48 ++++++++++++++++++++++++++++++++++++------------ mupq | 2 +- skiplist.py | 19 ++++++++++++------- 4 files changed, 85 insertions(+), 32 deletions(-) diff --git a/benchmarks.csv b/benchmarks.csv index c614c534..28be1159 100644 --- a/benchmarks.csv +++ b/benchmarks.csv @@ -19,9 +19,15 @@ kyber768 (10 executions),m4fspeed,631912,631599,632459,656455,656155,656969,7055 kyber768 (10 executions),m4fstack,634213,632786,644273,662556,661130,672615,712081,710655,722140 Signature Schemes,,,,,,,,,, Scheme,Implementation,Key Generation [cycles] (mean),Key Generation [cycles] (min),Key Generation [cycles] (max),Sign [cycles] (mean),Sign [cycles] (min),Sign [cycles] (max),Verify [cycles] (mean),Verify [cycles] (min),Verify [cycles] (max) -aimer-l1-param1 (10 executions),ref,392943,392938,392977,32386301,32386203,32386424,31111672,31111588,31111782 -aimer-l1-param2 (10 executions),ref,392938,392938,392941,79450721,79450349,79451595,78429263,78398061,78434987 -aimer-l3-param1 (10 executions),ref,981288,981288,981290,90953716,90953603,90953763,88350755,88350600,88350906 +aimer128f (10 executions),mem_opt,564325,564324,564326,46875341,46874593,46876276,26989249,26988505,26989828 +aimer128f (10 executions),ref,564323,564323,564324,28991142,28991115,28991171,26994617,26994234,26994927 +aimer128s (10 executions),mem_opt,564323,564323,564325,374834586,374834473,374834973,227230761,227230441,227230833 +aimer192f (10 executions),mem_opt,1397043,1397043,1397043,117993511,117991579,117995094,76372135,76370763,76373839 +aimer192f (10 executions),ref,1397040,1397040,1397041,81884026,81883991,81884035,76458825,76456517,76460984 +aimer192s (10 executions),mem_opt,1397047,1397039,1397079,916637185,916637133,916637425,629249382,629249345,629249415 +aimer256f (10 executions),mem_opt,3344254,3344250,3344255,233973308,233969892,233976707,170620601,170617448,170623743 +aimer256f (10 executions),ref,3344258,3344255,3344292,164484408,164483962,164484481,170648722,170647189,170651027 +aimer256s (10 executions),mem_opt,3344262,3344252,3344293,1752719642,1752719422,1752720844,1361337862,1361336718,1361338013 ascon-sign-128f-robust (10 executions),ref,122506162,122506099,122506254,2855797836,2855797243,2855798602,174707763,169973472,179525137 ascon-sign-128f-simple (10 executions),ref,69376878,69376875,69376883,1629111557,1629111334,1629112028,97798317,95509050,98714007 ascon-sign-128s-robust (10 executions),ref,7842366557,7842366432,7842366620,59267552580,59267543517,59267565672,60232378,57865239,62848708 @@ -173,9 +179,15 @@ kyber768,m4fspeed,5396,6468,6452,,,,,, kyber768,m4fstack,2820,2860,2844,,,,,, Signature Schemes,,,,,,,,,, Scheme,Implementation,Key Generation [bytes],Sign [bytes],Verify [bytes],,,,,, -aimer-l1-param1,ref,10952,187724,196728,,,,,, -aimer-l1-param2,ref,10952,442668,451672,,,,,, -aimer-l3-param1,ref,23864,413940,435640,,,,,, +aimer128f,mem_opt,8728,13864,15440,,,,,, +aimer128f,ref,8728,123376,15448,,,,,, +aimer128s,mem_opt,8728,27324,34624,,,,,, +aimer192f,mem_opt,19192,29976,31608,,,,,, +aimer192f,ref,19192,273104,31608,,,,,, +aimer192s,mem_opt,19192,43220,60384,,,,,, +aimer256f,mem_opt,50040,77164,78568,,,,,, +aimer256f,ref,50040,573284,78716,,,,,, +aimer256s,mem_opt,50040,76140,117044,,,,,, ascon-sign-128f-robust,ref,3260,2772,2992,,,,,, ascon-sign-128f-simple,ref,2632,2144,2448,,,,,, ascon-sign-128s-robust,ref,3452,2916,2240,,,,,, @@ -328,9 +340,15 @@ kyber768,m4fspeed,75.4,74.4,69.2,,,,,, kyber768,m4fstack,75.3,73.8,68.7,,,,,, Signature Schemes,,,,,,,,,, Scheme,Implementation,Key Generation [%],Sign [%],Verify [%],,,,,, -aimer-l1-param1,ref,72.0,47.2,46.7,,,,,, -aimer-l1-param2,ref,72.0,48.7,48.7,,,,,, -aimer-l3-param1,ref,77.4,41.7,41.6,,,,,, +aimer128f,mem_opt,50.6,66.1,49.6,,,,,, +aimer128f,ref,50.6,48.8,49.6,,,,,, +aimer128s,mem_opt,50.6,67.9,50.2,,,,,, +aimer192f,mem_opt,53.5,56.4,40.5,,,,,, +aimer192f,ref,53.5,39.8,40.5,,,,,, +aimer192s,mem_opt,53.5,58.1,40.9,,,,,, +aimer256f,mem_opt,58.9,40.6,27.0,,,,,, +aimer256f,ref,58.9,28.0,27.0,,,,,, +aimer256s,mem_opt,58.9,42.4,27.2,,,,,, ascon-sign-128f-robust,ref,0.0,0.0,0.0,,,,,, ascon-sign-128f-simple,ref,0.0,0.0,0.0,,,,,, ascon-sign-128s-robust,ref,0.0,0.0,0.0,,,,,, @@ -482,9 +500,15 @@ kyber768,m4fspeed,15964,0,0,15964,,,,, kyber768,m4fstack,13288,0,0,13288,,,,, Signature Schemes,,,,,,,,,, Scheme,Implementation,.text [bytes],.data [bytes],.bss [bytes],Total [bytes],,,,, -aimer-l1-param1,ref,19302,468,0,19770,,,,, -aimer-l1-param2,ref,19894,468,0,20362,,,,, -aimer-l3-param1,ref,23398,468,0,23866,,,,, +aimer128f,mem_opt,17476,0,0,17476,,,,, +aimer128f,ref,17076,0,0,17076,,,,, +aimer128s,mem_opt,17452,0,0,17452,,,,, +aimer192f,mem_opt,25384,0,0,25384,,,,, +aimer192f,ref,24956,0,0,24956,,,,, +aimer192s,mem_opt,25288,0,0,25288,,,,, +aimer256f,mem_opt,27804,0,0,27804,,,,, +aimer256f,ref,27304,0,0,27304,,,,, +aimer256s,mem_opt,27636,0,0,27636,,,,, ascon-sign-128f-robust,ref,17664,0,0,17664,,,,, ascon-sign-128f-simple,ref,17596,0,0,17596,,,,, ascon-sign-128s-robust,ref,17972,0,0,17972,,,,, diff --git a/benchmarks.md b/benchmarks.md index 87df4aa4..dfc2106f 100644 --- a/benchmarks.md +++ b/benchmarks.md @@ -21,9 +21,15 @@ ## Signature Schemes | scheme | implementation | key generation [cycles] | sign [cycles] | verify [cycles] | | ------ | -------------- | ----------------------- | ------------- | --------------- | -| aimer-l1-param1 (10 executions) | ref | AVG: 392,943
MIN: 392,938
MAX: 392,977 | AVG: 32,386,301
MIN: 32,386,203
MAX: 32,386,424 | AVG: 31,111,672
MIN: 31,111,588
MAX: 31,111,782 | -| aimer-l1-param2 (10 executions) | ref | AVG: 392,938
MIN: 392,938
MAX: 392,941 | AVG: 79,450,721
MIN: 79,450,349
MAX: 79,451,595 | AVG: 78,429,263
MIN: 78,398,061
MAX: 78,434,987 | -| aimer-l3-param1 (10 executions) | ref | AVG: 981,288
MIN: 981,288
MAX: 981,290 | AVG: 90,953,716
MIN: 90,953,603
MAX: 90,953,763 | AVG: 88,350,755
MIN: 88,350,600
MAX: 88,350,906 | +| aimer128f (10 executions) | mem_opt | AVG: 564,325
MIN: 564,324
MAX: 564,326 | AVG: 46,875,341
MIN: 46,874,593
MAX: 46,876,276 | AVG: 26,989,249
MIN: 26,988,505
MAX: 26,989,828 | +| aimer128f (10 executions) | ref | AVG: 564,323
MIN: 564,323
MAX: 564,324 | AVG: 28,991,142
MIN: 28,991,115
MAX: 28,991,171 | AVG: 26,994,617
MIN: 26,994,234
MAX: 26,994,927 | +| aimer128s (10 executions) | mem_opt | AVG: 564,323
MIN: 564,323
MAX: 564,325 | AVG: 374,834,586
MIN: 374,834,473
MAX: 374,834,973 | AVG: 227,230,761
MIN: 227,230,441
MAX: 227,230,833 | +| aimer192f (10 executions) | mem_opt | AVG: 1,397,043
MIN: 1,397,043
MAX: 1,397,043 | AVG: 117,993,511
MIN: 117,991,579
MAX: 117,995,094 | AVG: 76,372,135
MIN: 76,370,763
MAX: 76,373,839 | +| aimer192f (10 executions) | ref | AVG: 1,397,040
MIN: 1,397,040
MAX: 1,397,041 | AVG: 81,884,026
MIN: 81,883,991
MAX: 81,884,035 | AVG: 76,458,825
MIN: 76,456,517
MAX: 76,460,984 | +| aimer192s (10 executions) | mem_opt | AVG: 1,397,047
MIN: 1,397,039
MAX: 1,397,079 | AVG: 916,637,185
MIN: 916,637,133
MAX: 916,637,425 | AVG: 629,249,382
MIN: 629,249,345
MAX: 629,249,415 | +| aimer256f (10 executions) | mem_opt | AVG: 3,344,254
MIN: 3,344,250
MAX: 3,344,255 | AVG: 233,973,308
MIN: 233,969,892
MAX: 233,976,707 | AVG: 170,620,601
MIN: 170,617,448
MAX: 170,623,743 | +| aimer256f (10 executions) | ref | AVG: 3,344,258
MIN: 3,344,255
MAX: 3,344,292 | AVG: 164,484,408
MIN: 164,483,962
MAX: 164,484,481 | AVG: 170,648,722
MIN: 170,647,189
MAX: 170,651,027 | +| aimer256s (10 executions) | mem_opt | AVG: 3,344,262
MIN: 3,344,252
MAX: 3,344,293 | AVG: 1,752,719,642
MIN: 1,752,719,422
MAX: 1,752,720,844 | AVG: 1,361,337,862
MIN: 1,361,336,718
MAX: 1,361,338,013 | | ascon-sign-128f-robust (10 executions) | ref | AVG: 122,506,162
MIN: 122,506,099
MAX: 122,506,254 | AVG: 2,855,797,836
MIN: 2,855,797,243
MAX: 2,855,798,602 | AVG: 174,707,763
MIN: 169,973,472
MAX: 179,525,137 | | ascon-sign-128f-simple (10 executions) | ref | AVG: 69,376,878
MIN: 69,376,875
MAX: 69,376,883 | AVG: 1,629,111,557
MIN: 1,629,111,334
MAX: 1,629,112,028 | AVG: 97,798,317
MIN: 95,509,050
MAX: 98,714,007 | | ascon-sign-128s-robust (10 executions) | ref | AVG: 7,842,366,557
MIN: 7,842,366,432
MAX: 7,842,366,620 | AVG: 59,267,552,580
MIN: 59,267,543,517
MAX: 59,267,565,672 | AVG: 60,232,378
MIN: 57,865,239
MAX: 62,848,708 | @@ -177,9 +183,15 @@ ## Signature Schemes | Scheme | Implementation | Key Generation [bytes] | Sign [bytes] | Verify [bytes] | | ------ | -------------- | ---------------------- | ------------ | -------------- | -| aimer-l1-param1 | ref | 10,952 | 187,724 | 196,728 | -| aimer-l1-param2 | ref | 10,952 | 442,668 | 451,672 | -| aimer-l3-param1 | ref | 23,864 | 413,940 | 435,640 | +| aimer128f | mem_opt | 8,728 | 13,864 | 15,440 | +| aimer128f | ref | 8,728 | 123,376 | 15,448 | +| aimer128s | mem_opt | 8,728 | 27,324 | 34,624 | +| aimer192f | mem_opt | 19,192 | 29,976 | 31,608 | +| aimer192f | ref | 19,192 | 273,104 | 31,608 | +| aimer192s | mem_opt | 19,192 | 43,220 | 60,384 | +| aimer256f | mem_opt | 50,040 | 77,164 | 78,568 | +| aimer256f | ref | 50,040 | 573,284 | 78,716 | +| aimer256s | mem_opt | 50,040 | 76,140 | 117,044 | | ascon-sign-128f-robust | ref | 3,260 | 2,772 | 2,992 | | ascon-sign-128f-simple | ref | 2,632 | 2,144 | 2,448 | | ascon-sign-128s-robust | ref | 3,452 | 2,916 | 2,240 | @@ -334,9 +346,15 @@ ## Signature Schemes | Scheme | Implementation | Key Generation [%] | Sign [%] | Verify [%] | | ------ | -------------- | ------------------ | -------- | ---------- | -| aimer-l1-param1 | ref | 72.0% | 47.2% | 46.7% | -| aimer-l1-param2 | ref | 72.0% | 48.7% | 48.7% | -| aimer-l3-param1 | ref | 77.4% | 41.7% | 41.6% | +| aimer128f | mem_opt | 50.6% | 66.1% | 49.6% | +| aimer128f | ref | 50.6% | 48.8% | 49.6% | +| aimer128s | mem_opt | 50.6% | 67.9% | 50.2% | +| aimer192f | mem_opt | 53.5% | 56.4% | 40.5% | +| aimer192f | ref | 53.5% | 39.8% | 40.5% | +| aimer192s | mem_opt | 53.5% | 58.1% | 40.9% | +| aimer256f | mem_opt | 58.9% | 40.6% | 27.0% | +| aimer256f | ref | 58.9% | 28.0% | 27.0% | +| aimer256s | mem_opt | 58.9% | 42.4% | 27.2% | | ascon-sign-128f-robust | ref | 0.0% | 0.0% | 0.0% | | ascon-sign-128f-simple | ref | 0.0% | 0.0% | 0.0% | | ascon-sign-128s-robust | ref | 0.0% | 0.0% | 0.0% | @@ -490,9 +508,15 @@ ## Signature Schemes | Scheme | Implementation | .text [bytes] | .data [bytes] | .bss [bytes] | Total [bytes] | | ------ | -------------- | ------------- | ------------- | ------------ | ------------- | -| aimer-l1-param1 | ref | 19,302 | 468 | 0 | 19,770 | -| aimer-l1-param2 | ref | 19,894 | 468 | 0 | 20,362 | -| aimer-l3-param1 | ref | 23,398 | 468 | 0 | 23,866 | +| aimer128f | mem_opt | 17,476 | 0 | 0 | 17,476 | +| aimer128f | ref | 17,076 | 0 | 0 | 17,076 | +| aimer128s | mem_opt | 17,452 | 0 | 0 | 17,452 | +| aimer192f | mem_opt | 25,384 | 0 | 0 | 25,384 | +| aimer192f | ref | 24,956 | 0 | 0 | 24,956 | +| aimer192s | mem_opt | 25,288 | 0 | 0 | 25,288 | +| aimer256f | mem_opt | 27,804 | 0 | 0 | 27,804 | +| aimer256f | ref | 27,304 | 0 | 0 | 27,304 | +| aimer256s | mem_opt | 27,636 | 0 | 0 | 27,636 | | ascon-sign-128f-robust | ref | 17,664 | 0 | 0 | 17,664 | | ascon-sign-128f-simple | ref | 17,596 | 0 | 0 | 17,596 | | ascon-sign-128s-robust | ref | 17,972 | 0 | 0 | 17,972 | diff --git a/mupq b/mupq index d5d4ed32..817a9de4 160000 --- a/mupq +++ b/mupq @@ -1 +1 @@ -Subproject commit d5d4ed32d3016346c2c882f0ca3c951936364205 +Subproject commit 817a9de4bbcc87bf5fb57ca85eecf0d566e0c414 diff --git a/skiplist.py b/skiplist.py index 4f6a868b..f483bfb7 100644 --- a/skiplist.py +++ b/skiplist.py @@ -1,11 +1,16 @@ skip_list = [ - {'scheme': 'aimer-l1-param1', 'implementation': 'ref', 'estmemory': 206848}, - {'scheme': 'aimer-l1-param2', 'implementation': 'ref', 'estmemory': 461824}, - {'scheme': 'aimer-l1-param3', 'implementation': 'ref', 'estmemory': 1442816}, - {'scheme': 'aimer-l3-param1', 'implementation': 'ref', 'estmemory': 452608}, - {'scheme': 'aimer-l3-param2', 'implementation': 'ref', 'estmemory': 1091584}, - {'scheme': 'aimer-l5-param1', 'implementation': 'ref', 'estmemory': 926720}, - {'scheme': 'aimer-l5-param2', 'implementation': 'ref', 'estmemory': 2169856}, + {'scheme': 'aimer192s', 'implementation': 'opt_mem', 'estmemory': 70656}, + {'scheme': 'aimer192s', 'implementation': 'ref', 'estmemory': 2036736}, + {'scheme': 'aimer192f', 'implementation': 'opt_mem', 'estmemory': 46080}, + {'scheme': 'aimer192f', 'implementation': 'ref', 'estmemory': 287744}, + {'scheme': 'aimer128s', 'implementation': 'opt_mem', 'estmemory': 39936}, + {'scheme': 'aimer128s', 'implementation': 'ref', 'estmemory': 924672}, + {'scheme': 'aimer256f', 'implementation': 'opt_mem', 'estmemory': 105472}, + {'scheme': 'aimer256f', 'implementation': 'ref', 'estmemory': 600064}, + {'scheme': 'aimer256s', 'implementation': 'opt_mem', 'estmemory': 135168}, + {'scheme': 'aimer256s', 'implementation': 'ref', 'estmemory': 4148224}, + {'scheme': 'aimer128f', 'implementation': 'opt_mem', 'estmemory': 22528}, + {'scheme': 'aimer128f', 'implementation': 'ref', 'estmemory': 131072}, {'scheme': 'ascon-sign-128f-robust', 'implementation': 'ref', 'estmemory': 21504}, {'scheme': 'ascon-sign-128f-simple', 'implementation': 'ref', 'estmemory': 21504}, {'scheme': 'ascon-sign-128s-robust', 'implementation': 'ref', 'estmemory': 12288},