]>
zoso.dev Git - nano-pow.git/log
Chris Duncan [Sun, 9 Mar 2025 20:08:46 +0000 (13:08 -0700)]
Add required environment shebang. Fix file read path. Expand logging of output to try troubleshooting WebGPU.
Chris Duncan [Sun, 9 Mar 2025 09:20:49 +0000 (01:20 -0800)]
Use file contents injected directly into HTML string to load NanoPow into puppeteer browser page instance. Add flags marked by Chrome dev team. WebGPU still does not seem to work; this is using WebGL, but it is at least working.
Chris Duncan [Sun, 9 Mar 2025 07:37:37 +0000 (23:37 -0800)]
Add copyright notice.
Chris Duncan [Sun, 9 Mar 2025 07:36:45 +0000 (23:36 -0800)]
Merge v3.0.1 from main.
Chris Duncan [Sun, 9 Mar 2025 06:12:14 +0000 (22:12 -0800)]
Refactor Deno cli for puppeteer.
Chris Duncan [Sun, 9 Mar 2025 04:05:05 +0000 (20:05 -0800)]
Create GL canvas as part of initialization call.
Chris Duncan [Sat, 8 Mar 2025 09:10:15 +0000 (01:10 -0800)]
Start setting up CLI structure. Code originally intended for deno is being migrated to puppeteer.
Chris Duncan [Sat, 8 Mar 2025 09:05:50 +0000 (01:05 -0800)]
Only set GPU lost promise callback if lost actually exists as a property on the device.
Chris Duncan [Tue, 4 Mar 2025 20:29:13 +0000 (12:29 -0800)]
Remove deprecated file reference.
Chris Duncan [Sat, 1 Mar 2025 07:11:27 +0000 (23:11 -0800)]
Upload bundle.
Chris Duncan [Sat, 1 Mar 2025 06:52:32 +0000 (22:52 -0800)]
Release version.
Chris Duncan [Sat, 1 Mar 2025 06:51:43 +0000 (22:51 -0800)]
Update dependencies.
Chris Duncan [Sat, 1 Mar 2025 06:48:28 +0000 (22:48 -0800)]
License benchmarks file to comply with REUSE.
Chris Duncan [Sat, 1 Mar 2025 06:47:30 +0000 (22:47 -0800)]
Remove references to polluting global namespace. Update README. Delete unneeded benchmarks.
Chris Duncan [Sat, 1 Mar 2025 06:41:48 +0000 (22:41 -0800)]
Upload new bundle.
Chris Duncan [Sat, 1 Mar 2025 06:29:49 +0000 (22:29 -0800)]
Fix duplicate constant declaration from branch merge. Add notes to benchmarks sheet about browser canvases.
Chris Duncan [Sat, 1 Mar 2025 06:19:48 +0000 (22:19 -0800)]
Overhaul both WebGPU and WebGL to use vec4 for parallel operation hinting on supported hardware. Refactor WebGL BLAKE2b to simplify pixel-coordinate-based nonce variation, to unroll main G mix function loop for performance, and to better differentiate between search and validate processes. Simplify vertex shader now that it is only required for drawing the fullscreen quad and not for pixel coordinates. Create new downsampling fragment shader which enables larger canvases and more nonces per frame without introducing lag due to synchronous readback. Maintain canvas between draw calls unless effort has changed. Attempt to handle WebGL context loss, with improved reset function, by reinitializing class. Reduce promise stack increases when waiting for query result. Fix color buffer clearing by using correct API function. Improve nonce seed generation in both WebGL and WebGPU by switching from crypto random to insecure random which is OK in the context of PoW. Reduce garbage collection by reusing static variables. Add debugging throughout that obeys user-provided debug flag which is now stored as a static variable as well. Add Typescript typings for new WebGL types. Fix minor issues with test page. Add benchmark results table.
Chris Duncan [Fri, 28 Feb 2025 14:52:52 +0000 (06:52 -0800)]
Save desktop benchmarks.
Chris Duncan [Fri, 28 Feb 2025 06:28:21 +0000 (22:28 -0800)]
Save iPhone benchmarks.
Chris Duncan [Fri, 28 Feb 2025 05:40:52 +0000 (21:40 -0800)]
Save benchmarks from 2.0.0 for comparison to upcoming release candidate.
Chris Duncan [Wed, 26 Feb 2025 20:42:38 +0000 (12:42 -0800)]
Add more tests for checking validation.
Chris Duncan [Sun, 16 Feb 2025 21:28:09 +0000 (13:28 -0800)]
Test bundle with template literal for compute shader instead of quoted string.
Chris Duncan [Wed, 12 Feb 2025 06:29:30 +0000 (22:29 -0800)]
Reupload bundle.
Chris Duncan [Tue, 11 Feb 2025 21:43:20 +0000 (13:43 -0800)]
Rename random input for clarity of intent.
Chris Duncan [Sun, 9 Feb 2025 22:47:56 +0000 (14:47 -0800)]
Comment out early exit for mobile testing.
Chris Duncan [Sat, 8 Feb 2025 20:07:02 +0000 (12:07 -0800)]
Fix testing URL.
Chris Duncan [Sat, 8 Feb 2025 20:03:33 +0000 (12:03 -0800)]
Upload bundle for mobile testing.
Chris Duncan [Wed, 5 Feb 2025 05:23:43 +0000 (21:23 -0800)]
Use hex for v indexing to shorten names.
Chris Duncan [Wed, 5 Feb 2025 05:21:37 +0000 (21:21 -0800)]
Remove or simplify extraneous swizzles.
Chris Duncan [Fri, 7 Feb 2025 23:13:19 +0000 (15:13 -0800)]
Restore early exit for testing.
Chris Duncan [Fri, 7 Feb 2025 22:53:45 +0000 (14:53 -0800)]
Upload bundle for testing.
Chris Duncan [Fri, 7 Feb 2025 22:53:30 +0000 (14:53 -0800)]
Test workgroup size of 32 since Nvidia card is able to take advantage of L1 cache this way.
Chris Duncan [Wed, 5 Feb 2025 14:20:28 +0000 (06:20 -0800)]
Fix copypasta bug.
Chris Duncan [Wed, 5 Feb 2025 14:18:33 +0000 (06:18 -0800)]
Found the culprit. Atomic exchange is actually 40ms slower than atomic load, so revert to conditional load-and-store. Makes sense, it's doing two operations.
Chris Duncan [Wed, 5 Feb 2025 13:58:27 +0000 (05:58 -0800)]
Log loading errors for WebGPU in addition to WebGL.
Chris Duncan [Wed, 5 Feb 2025 13:56:46 +0000 (05:56 -0800)]
Short-circuit 'and' does not appear to be working, at least within this select statement.
This reverts commit
79e20147888328156f07667ed5430c218455adbb .
Chris Duncan [Wed, 5 Feb 2025 13:40:14 +0000 (05:40 -0800)]
Replace another if statement with select.
Chris Duncan [Wed, 5 Feb 2025 13:38:28 +0000 (05:38 -0800)]
Use select instead of if statement.
Chris Duncan [Wed, 5 Feb 2025 05:02:37 +0000 (21:02 -0800)]
Technically, a valid nonce can be equal to the threshold, so fix the final comparison.
Chris Duncan [Wed, 5 Feb 2025 05:01:41 +0000 (21:01 -0800)]
Benchmarking shows vec4 version actually ended up being slower, probably due to increased overhead and register pressure. Revert to vec2 implementation.
Chris Duncan [Tue, 4 Feb 2025 21:38:32 +0000 (13:38 -0800)]
Move temp variables to be near other declarations in main.
Chris Duncan [Tue, 4 Feb 2025 21:36:28 +0000 (13:36 -0800)]
Expand documentation. Remove unused variables.
Chris Duncan [Tue, 4 Feb 2025 21:27:19 +0000 (13:27 -0800)]
Skip a couple unnecessary computations in the final G round. Implement literal of iv[0] used in digest.
Chris Duncan [Tue, 4 Feb 2025 21:18:11 +0000 (13:18 -0800)]
Finish reordering G round computation. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 21:13:01 +0000 (13:13 -0800)]
Reorder eigth through tenth G round computation. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 21:05:14 +0000 (13:05 -0800)]
Reorder fifth through seventh G round computation. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 19:30:44 +0000 (11:30 -0800)]
Reorder third and fourth G round computation. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 17:53:49 +0000 (09:53 -0800)]
Reorder second G round computation. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 13:57:56 +0000 (05:57 -0800)]
Reorder G round computation to try allowing compiler to improve instruction scheduling and reduce assignment statements. Compiles and validates.
Chris Duncan [Tue, 4 Feb 2025 13:44:31 +0000 (05:44 -0800)]
Deprecate unused zero vec4. Rename zero vec2 for brevity.
Chris Duncan [Tue, 4 Feb 2025 13:38:14 +0000 (05:38 -0800)]
Deprecate x and y temp vars for final two rounds.
Chris Duncan [Tue, 4 Feb 2025 13:34:27 +0000 (05:34 -0800)]
Deprecate x and y temp vars for ninth and tenth round.
Chris Duncan [Tue, 4 Feb 2025 03:54:31 +0000 (19:54 -0800)]
Deprecate x and y temp vars for sixth through eighth round.
Chris Duncan [Tue, 4 Feb 2025 03:02:11 +0000 (19:02 -0800)]
Deprecate x and y temp vars for fifth round.
Chris Duncan [Tue, 4 Feb 2025 02:55:20 +0000 (18:55 -0800)]
Deprecate x and y temp vars for fourth round.
Chris Duncan [Tue, 4 Feb 2025 00:35:59 +0000 (16:35 -0800)]
Update comments.
Chris Duncan [Tue, 4 Feb 2025 00:33:03 +0000 (16:33 -0800)]
Deprecate x and y temp vars for third round.
Chris Duncan [Tue, 4 Feb 2025 00:26:31 +0000 (16:26 -0800)]
Fill in comment headings with m[sigma] notes.
Chris Duncan [Mon, 3 Feb 2025 23:36:40 +0000 (15:36 -0800)]
Deprecate x and y temp vars for first two rounds.
Chris Duncan [Mon, 3 Feb 2025 23:19:56 +0000 (15:19 -0800)]
Compress v naming convention using hex convention.
Chris Duncan [Mon, 3 Feb 2025 23:15:59 +0000 (15:15 -0800)]
Convert eight sequential rounds of vec2 G mixing into parallelized four rounds of vec4 G. Read threshold direct from uniform to save a redundant assignment. Fix test page validation executing on every single input event. Delete benchmark file since it is completely outdated. Delete bundle to be reuploaded after tweaking new build. Update comment documentation.
Chris Duncan [Mon, 3 Feb 2025 05:24:44 +0000 (21:24 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 05:20:00 +0000 (21:20 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 05:16:04 +0000 (21:16 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 05:11:18 +0000 (21:11 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 05:06:28 +0000 (21:06 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 05:00:14 +0000 (21:00 -0800)]
Copy benchmark.
Chris Duncan [Mon, 3 Feb 2025 04:55:09 +0000 (20:55 -0800)]
Copy benchmark from compress-inline.
Chris Duncan [Mon, 3 Feb 2025 04:50:54 +0000 (20:50 -0800)]
Benchmark.
Chris Duncan [Mon, 3 Feb 2025 03:48:40 +0000 (19:48 -0800)]
Benchmark.
Chris Duncan [Sat, 1 Feb 2025 22:37:33 +0000 (14:37 -0800)]
Benchmark.
Chris Duncan [Fri, 31 Jan 2025 18:50:54 +0000 (10:50 -0800)]
Benchmarks.
Chris Duncan [Thu, 30 Jan 2025 18:03:32 +0000 (10:03 -0800)]
Benchmarks, now with a date.
Chris Duncan [Sat, 1 Feb 2025 21:40:59 +0000 (13:40 -0800)]
Notate benchmark.
Chris Duncan [Sat, 1 Feb 2025 21:29:09 +0000 (13:29 -0800)]
Benchmarks without early return.
Chris Duncan [Wed, 29 Jan 2025 22:44:25 +0000 (14:44 -0800)]
Log median values. Benchmark. Upload bundle for mobile testing.
Chris Duncan [Tue, 28 Jan 2025 00:23:47 +0000 (16:23 -0800)]
Zero-threshold benchmarks
Chris Duncan [Sun, 26 Jan 2025 08:20:52 +0000 (00:20 -0800)]
Overhaul NanoPowGl to use vector operations which greatly simplifies the Blake2b algorithm. Simplify nonce generation and work output by taking advantage of WebGL2 32-bit vector RGBA pixel type options. Fix validation in NanoPowGl by restricting result to passed nonce. Clean up unused variables. Minor test page fixes.
Chris Duncan [Sat, 25 Jan 2025 08:03:19 +0000 (00:03 -0800)]
Eliminate temporary variables from G.
Chris Duncan [Sat, 25 Jan 2025 07:30:23 +0000 (23:30 -0800)]
Check found flag only once per workgroup to avoid numerous competing atomic loads.
Chris Duncan [Sat, 25 Jan 2025 07:29:26 +0000 (23:29 -0800)]
Revert to single dimensional workgroup size since that apparently does in fact matter in regards to wavefronts and not just number of threads per workgroup.
Chris Duncan [Sat, 25 Jan 2025 07:15:48 +0000 (23:15 -0800)]
Remove useless found flag check from validate since it is only ever invoked once.
Chris Duncan [Sat, 25 Jan 2025 07:15:11 +0000 (23:15 -0800)]
Eliminate an atomic operation by performing an exchange if threshold passed.
Chris Duncan [Sat, 25 Jan 2025 07:13:44 +0000 (23:13 -0800)]
Remove redundant swizzles. Refactor 32-bit rotation to remove a swizzle operation.
Chris Duncan [Sat, 25 Jan 2025 07:12:43 +0000 (23:12 -0800)]
Validate work on test page with pizzazz.
Chris Duncan [Sat, 25 Jan 2025 07:11:43 +0000 (23:11 -0800)]
Validate input prior to setting busy flag to avoid perpetual busy status.
Chris Duncan [Thu, 23 Jan 2025 13:45:56 +0000 (05:45 -0800)]
Adjust truncated average calculation. Initialize benchmark min to max integer.
Chris Duncan [Tue, 21 Jan 2025 22:40:15 +0000 (14:40 -0800)]
Fix truncated benchmark calculation.
Chris Duncan [Tue, 21 Jan 2025 18:14:49 +0000 (10:14 -0800)]
Update README with new options object. Add example of async module loading in HTML. Reword global namespace pollution option to discourage it as a practice. Add sections for acknowledgements and licenses. Whitespace.
Chris Duncan [Tue, 21 Jan 2025 17:26:35 +0000 (09:26 -0800)]
Initialize digest constant as vec2 and initialize v0 from it. Update doc comments.
Chris Duncan [Tue, 21 Jan 2025 17:08:42 +0000 (09:08 -0800)]
Set default test run to 1.
Chris Duncan [Tue, 21 Jan 2025 17:08:11 +0000 (09:08 -0800)]
Reduce loop iteration by reading 64 bits at a time into UBO.
Chris Duncan [Mon, 20 Jan 2025 22:26:51 +0000 (14:26 -0800)]
Release version.
Chris Duncan [Mon, 20 Jan 2025 22:26:04 +0000 (14:26 -0800)]
Show API type in test page summary output.
Chris Duncan [Mon, 20 Jan 2025 22:18:42 +0000 (14:18 -0800)]
Remove nano-webgl-pow package since it is no longer used anywhere. Add copyright notice to type definition file.
Chris Duncan [Mon, 20 Jan 2025 22:03:22 +0000 (14:03 -0800)]
Add type description to NanoPowGl.
Chris Duncan [Mon, 20 Jan 2025 21:35:44 +0000 (13:35 -0800)]
Fix truncated time calculation. Remove repo minified main link.
Chris Duncan [Mon, 20 Jan 2025 18:51:23 +0000 (10:51 -0800)]
Add custom threshold to test page.
Chris Duncan [Mon, 20 Jan 2025 18:50:41 +0000 (10:50 -0800)]
Remove testing logs.
Chris Duncan [Mon, 20 Jan 2025 07:28:12 +0000 (23:28 -0800)]
Log iPhone benchmark.