From 754c745e84d155aa4e19d4de95542cb88224396a Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 4 Jul 2025 00:48:13 -0700 Subject: [PATCH] Delete ancient benchmarks. --- benchmarks.md | 199 -------------------------------------------------- 1 file changed, 199 deletions(-) delete mode 100644 benchmarks.md diff --git a/benchmarks.md b/benchmarks.md deleted file mode 100644 index fc2f5a9..0000000 --- a/benchmarks.md +++ /dev/null @@ -1,199 +0,0 @@ - - -PASS Original PoW module: Time to calculate proof-of-work for a send block 16 times -Total: 89756 ms -Average: 5609.75 ms -Harmonic: 2092.567565254879 ms -Geometric: 3612.112662613675 ms - -PASS Customized PoW: Time to calculate proof-of-work for a send block 16 times -Total: 33240 ms -Average: 2077.5 ms -Harmonic: 1328.5635414262717 ms -Geometric: 1663.110986923899 ms - -How much faster? -Total: 56156 ms -Average: 3532 ms -Harmonic: 764 ms -Geometric: 1949 ms - -Another PowGl test: -Total: 22831.300000041723 ms -Average: 3805.2166666736207 ms -Harmonic: 928.6432328540742 ms -Geometric: 2500.810238375608 ms -Minimum: 193 ms -Maximum: 8361 ms - -The proof-of-work equation for Nano cryptocurrency is defined as `blake2b(nonce||blockhash)>=threshold` where blake2b is the hash function configured for an 8-byte output, nonce is a random 8-byte value, || is concatenation, blockhash is a 32-byte value, and threshold is 0xfffffff800000000. - -My code currently finds valid nonces on a gaming GPU without issue but only because the initial search space is so large due to using a workgroup size of 256 and a dispatch of (256, 256, 256), so the probability of finding a nonce in the first pass is extremely high. However, this does not perform well on less powerful hardware like smartphones. Please alter my code to perform the nonce search in `main()` in a loop until a valid nonce is found with the idea that a smaller workgroup size and/or smaller dispatch dimensions can allow weak hardware to nonetheless iterate through nonces to search for a valid one and return it. - - -Total: 680948 ms -Average: 1329.9765625 ms -Harmonic: 749.6552658409396 ms -PASS Customized PoW: Time to calculate proof-of-work for a send block 512 times - - - -CHROMIUM with more accurate timings - -PowGpu: Time to calculate proof-of-work for a send block 8192 times -Total: 2934170.3000008166 ms -Average: 358.17508544931843 ms -Harmonic: 218.11823673331645 ms -Minimum: 76.2000000178814 ms -Maximum: 2999.9000000059605 ms - - - -PowGpu: Time to calculate proof-of-work for a send block 512 times -Total: 187428.40000000596 ms -Average: 366.07109375001164 ms -Harmonic: 220.70399520519166 ms - -PowGpu: Time to calculate proof-of-work for a send block 512 times -Total: 187827.7999998629 ms -Average: 366.85117187473224 ms -Harmonic: 223.9897252426498 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining entire first G round) -Total: 156981.3999993205 ms -Average: 306.60429687367287 ms -Harmonic: 128.74904701127866 ms -Minimum: 21.700000047683716 ms -Maximum: 1981.199999988079 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining entire first G round) -Total: 162225.30000036955 ms -Average: 316.8462890632218 ms -Harmonic: 130.50451885939313 ms -Geometric: 211.25671228925867 ms -Minimum: 21.600000023841858 ms -Maximum: 2267.600000023842 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining 3 rounds of G mixing) -Total: 155547.09999996424 ms -Average: 303.80292968743015 ms -Harmonic: 118.19131857240315 ms -Geometric: 196.77234360098842 ms -Minimum: 19.5 ms -Maximum: 2140.2000000476837 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining 5 rounds of G mixing) -Total: 165145.19999998808 ms -Average: 322.5492187499767 ms -Harmonic: 126.40822610460997 ms -Geometric: 205.28427810986508 ms -Minimum: 20.099999964237213 ms -Maximum: 1850.5 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining 5 rounds of G mixing and replacing if with select in original G function) -Total: 135665.40000021458 ms -Average: 264.9714843754191 ms -Harmonic: 118.80915172412905 ms -Geometric: 181.19191881133972 ms -Minimum: 19.599999964237213 ms -Maximum: 1908.5 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining 9 rounds of G mixing and replacing if with select in original G function) -Total: 147481.09999907017 ms -Average: 288.0490234356839 ms -Harmonic: 122.25335314983455 ms -Geometric: 192.75325397221323 ms -Minimum: 22.19999998807907 ms -Maximum: 1762.800000011921 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining all rounds of G mixing) -Total: 165041.20000058413 ms -Average: 322.34609375114087 ms -Harmonic: 121.30652845909019 ms -Geometric: 202.80092012876665 ms -Minimum: 21.69999998807907 ms -Maximum: 2303 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after inlining all rounds of G mixing and all if statements replaced with select function) -Total: 134865.20000064373 ms -Average: 263.4085937512573 ms -Harmonic: 108.28019222737286 ms -Geometric: 171.8797089689105 ms -Minimum: 20.80000001192093 ms -Maximum: 2093.199999988079 ms - -libnemo: Time to calculate proof-of-work for a send block 512 times -(after increasing workgroup_size to 256 from 64 and decreasing dispatch size) -Total: 149857.0999999717 ms -Average: 292.6896484374447 ms -Harmonic: 73.49751645489904 ms -Geometric: 174.9560632035056 ms -Minimum: 2.600000001490116 ms -Maximum: 2364.5999999940395 ms - -GLOBALS.mjs:46 PASS libnemo: Time to calculate proof-of-work for a send block 512 times -(after increasing workgroup_size to 256 from 64 and decreasing dispatch size) -Total: 145201.70000004023 ms -Average: 283.5970703125786 ms -Harmonic: 54.2894989554052 ms -Geometric: 155.58659283933008 ms -Minimum: 2.5 ms -Maximum: 1812.3999999985099 ms - - - -PowGpu: Time to calculate proof-of-work for a send block 32 times -Total: 8909.500000029802 ms -Average: 278.4218750009313 ms -Harmonic: 191.49100480215873 ms -Geometric: 232.13670548729021 ms -Minimum: 76.69999998807907 ms -Maximum: 641.5 ms - -PowGpu: Time to calculate proof-of-work for a send block 32 times -Total: 11805.200000077486 ms -Average: 368.91250000242144 ms -Harmonic: 131.36379466491744 ms -Geometric: 228.69384924435158 ms -Minimum: 21.900000005960464 ms -Maximum: 1479.5 ms - -libnemo: Time to calculate proof-of-work for a send block 32 times -(after inlining three G calls) -Total: 11208.399999916553 ms -Average: 350.2624999973923 ms -Harmonic: 115.78621253028925 ms -Geometric: 210.41080264689026 ms -Minimum: 25 ms -Maximum: 1249.199999988079 ms - -libnemo: Time to calculate proof-of-work for a send block 32 times -(after inlining entire first G round) -Total: 9778.899999797344 ms -Average: 305.590624993667 ms -Harmonic: 120.65186396913916 ms -Geometric: 193.85674573632113 ms -Minimum: 23.69999998807907 ms -Maximum: 1752.199999988079 ms - -libnemo: Time to calculate proof-of-work for a send block 32 times -(after inlining 3 rounds of G mixing) -Total: 10425.399999856949 ms -Average: 325.79374999552965 ms -Harmonic: 150.5729403997282 ms -Geometric: 231.43806657572657 ms -Minimum: 31.900000035762787 ms -Maximum: 954.9000000357628 ms - -In the following code, look at the fourth argument. Prepend it with `v&` and remove its `u` suffix. Then insert a parameter right after it with the same name except the digit is incremented by 1. For example, `G(&v, &v0, &v1, 8u, 16u, 24u, m0, m1, m2, m3);` becomes `G(&v, &v0, &v1, &v8, &v9, 16u, 24u, m0, m1, m2, m3);`. Make sure the ampersand is present and the digits are correct as described. Do not make any other modifications. -- 2.47.3