Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FEAT: Add Icicle GPU-Accelleration to Plonk Prover behind build tag #1051

Draft
wants to merge 60 commits into
base: master
Choose a base branch
from

Conversation

bigsky77
Copy link

Description

This PR adds experimental support for Icicle GPU acceleration library for Plonk backend and the BN254 curve.

Type of change

[X] New feature (non-breaking change which adds functionality)

How has this been tested?

[X] Using the circuits in gnark/examples/plonk/main.go

  1. Follow the instructions for setting up Icicle in the linked repository above
  2. From gnark run go run examples/plonk/main.go

[X] Using Ingonyama's fork of Succinct Lab's Gnark-Plonky2-Verifier

  1. From Gnark-Plonky2-Verifier run go run benchmarks.go --icicle

How has this been benchmarked?

Benchmarks ran on Gnark-Plonky2-Verifier using AWS: g5.8xlarge A10g 32 core 128GB.

Benchmarks can be seen here.

Note

These benchmarks are not final. We are still updating our Go Cuda bindings which will provide a significant speed-up to the NTT. Also note our Compute Quotient Polynomial is actively being refined to increase speed. The current implementation is ~20s slower than the ideal implementation due to the need to run CUDA processes synchronously. This will be updated when solved.

Dependencies

This merge requests depends on modifications to the following two repositories.

  1. IcicleGnark - Pull Request
  2. Gnark-Crypto - Pull Request

Checklist:

  • [X ] I have performed a self-review of my code
  • [ X] I have commented my code, particularly in hard-to-understand areas
  • [ X] I have made corresponding changes to the documentation
  • [ X] I have added tests that prove my fix is effective or that my feature works
  • [ X] I did not modify files generated from templates
  • [ X] golangci-lint does not output errors locally
  • [ X] New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

jeremyfelder and others added 30 commits October 2, 2023 09:48
…th BN254.

Full replacement of CPU prove with GPU prove can be used with the build tag 'gpu'.
…or NTT and MSM.

Add GPU memory cleanup using cudaFree
Add GPU version of marshal
…erations

Update iciclegnark dependency to v0.1.0
@CLAassistant
Copy link

CLAassistant commented Feb 12, 2024

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants