argumentcomputer / lurk-beta

Lurk is a Turing-complete programming language for recursive zk-SNARKs. It is a statically scoped dialect of Lisp, influenced by Scheme and Common Lisp. (contact: @porcuquine)
https://lurk-lang.org/
Apache License 2.0
427 stars 54 forks source link

Offload witness generation for LEM slots #768

Open arthurpaulino opened 11 months ago

arthurpaulino commented 11 months ago

The witness generation for the slots involving Poseidon hashing could be performed on GPU, which would probably provide further improvements on top of the parallelization implemented in #766.

porcuquine commented 11 months ago

This is stated in far too definite a form. It might or might not be helpful in the context of an optimized pipeline on a real system.

arthurpaulino commented 11 months ago

@porcuquine please feel free to edit 🙏🏼

porcuquine commented 11 months ago

I think my comment covers the nuance that was missing. In terms of substance:

Moreover, this would put witness generation in competition with MSM for GPU usage. Currently, our best-performing proof generation shows negligible CPU usage, so the most promising approach to optimal throughput is likely better CPU utilization to minimize witness-generation time.