* ok wgpu runs hello world
* toy hasher
* separate wgsl file
* kinda poseidon2
* test vectors
* closer
* a bit of debug
* closer
* sort of almost
* fixed gf_mul
* merge gf_mul back into mining, clean up tests
* fix bytes_to_field_elements
* linear layer fixed
* maybe better?
* mds tests
* cleanup debug output
* found gf_mul bug
* fixed gf_mul bug
* efficient sbox again
* mds matches
* cleanup
* test internal layer
* cleaner
* external linear passes
* external layer tests
* fixed the constants
* moar tests
* more cleaning
* actually test just internal
* fairly clean tests now
* removed another pointless test
* more cleanup
* gf_from_const tests
* testing
* fixed permutations
* double hash tests, but they fail
* moar tests!
* hash-twice works, thanks Gemini 3 Pro!
* gpu runs but doesn't mine
* better logging
* lock workers to gpu
* send target to gpu not difficulty
* fix verify_nonce
* double hash failures
* double hash matches
* tests pass and it mines now
* fix benches
* a bit faster now
* improved logging
* fix benches
* simplified gpu code
* further simplification
* a bit simpler
* slight simplification
* a bit faster
* dynamic thread allocation and work coarsening
* more benching
* faster
* faster
* faster
* clean up documentation
* a bit faster
* simplify
* simplify
* optimized mds
* almost par with cpu now
* fmt
* clippy
* support multiple gpus
* clippy
* unused
* fixed some logs
---------
Co-authored-by: Nikolaus Heger <nheger@gmail.com>