Skip to content

zkmopro/awesome-client-side-gpu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Client-Side GPU Awesome

CC0

GPU-accelerated cryptography and zero-knowledge proof projects that run on user devices — browsers, phones, and desktops — not remote servers.

Contents


What Is Client-Side GPU Proving

Zero-knowledge proofs require heavy finite-field and elliptic-curve arithmetic that maps naturally onto GPU parallelism. Client-side GPU proving brings these speedups to ordinary user hardware — a browser tab, a smartphone, a laptop — so privacy-preserving applications never need to send sensitive inputs to a remote server.

Six classes of operation benefit most from GPU acceleration:

  • MSM (Multi-Scalar Multiplication) — dominant cost in pairing-based systems (Groth16, PLONK).
  • NTT (Number Theoretic Transform) — core of STARK and FRI-based systems.
  • Polynomial evaluation and matrix-vector multiplication — high-throughput linear algebra.
  • Merkle tree commitments — batch hashing for hash-based proof schemes.
  • Sumcheck protocol — multivariate polynomial reductions (GKR, WHIR).
  • Linear encoding and hashing — used in Basefold and Brakedown commitment schemes.

MSM and NTT yield 10–100× speedups over CPU on modern GPU hardware and are the primary focus of most projects in this list.

GPU API Quick-Reference

API Platforms Primary Languages Browser Support Notes
WebGPU Browser, native (via wgpu) WGSL, Rust, JS/TS Chrome 113+, Firefox (flag), Safari TP W3C standard; replaces WebGL for compute
Metal iOS, macOS, Apple Silicon MSL, Rust (metal-rs), Swift No 2–3× faster than OpenGL on Apple hardware
Vulkan Compute Windows, Linux, Android GLSL, SPIR-V, Rust No Cross-vendor; lowest-level portable API
ROCm / HIP AMD GPUs (Linux) HIP C++ No CUDA-compatible syntax; growing mobile support
CUDA NVIDIA GPUs CUDA C++ No Highest throughput; server/desktop only
OpenCL Most GPUs OpenCL C No Legacy; being superseded by Vulkan/WebGPU

Projects by GPU Technology

WebGPU (Browser-Native)

  • ICME-Lab/msm-webgpu - MSM over BN254 using the cuZK algorithm, compiled to WGSL shaders. GPU: WebGPU Curve: BN254 Op: MSM Lang: Rust.

  • td-kwj-zp2023/webgpu-msm-bls12-377 - Winning ZPrize 2023 entry for MSM over BLS12-377. GPU: WebGPU Curve: BLS12-377 Op: MSM Lang: TypeScript.

  • td-kwj-zp2023/webgpu-msm-twisted-edwards - ZPrize 2023 MSM entry targeting Twisted Edwards curves with extended-coordinates arithmetic in WGSL. GPU: WebGPU Curve: BLS12-377 Op: MSM Lang: TypeScript.

  • demox-labs/webgpu-crypto - Research-stage library covering MSM, NTT, and hash functions over BLS12-377 and BN254. GPU: WebGPU Curve: BLS12-377, BN254 Op: MSM, NTT, Hash Lang: TypeScript.

  • demox-labs/webgpu-msm - Baseline ZPrize 2023 reference for browser-native MSM over BLS12-377. GPU: WebGPU Curve: BLS12-377 Op: MSM Lang: TypeScript.

  • penumbra-zone/webgpu - Pioneer Groth16 prover for Penumbra's shielded transactions over BLS12-377. GPU: WebGPU Curve: BLS12-377 Op: Groth16 Lang: Rust Status: Archived.
  • ligeroinc/ligero-prover - Hash-based ZK prover using FFT-based polynomial IOPs, running in browsers via Dawn/Emscripten. GPU: WebGPU Op: NTT, Hash Lang: C++.

Metal (Apple Silicon / iOS / macOS)

  • zkmopro/gpu-acceleration - Metal MSM library for Apple Silicon achieving 40–100× speedup over CPU, integrated into the mopro toolkit. GPU: Metal Curve: BN254 Op: MSM Lang: Rust.

  • geometryxyz/msl-secp256k1 - Metal Shading Language implementation of secp256k1 elliptic-curve arithmetic using Jacobian coordinates, targeting Apple Silicon GPUs. GPU: Metal Curve: secp256k1 Op: EC Arithmetic Lang: MSL.

Vulkan / ROCm / HIP (Cross-Platform Native)

The Cross-Platform Frameworks listed below all support Vulkan or ROCm as one of their backends.

Cross-Platform Frameworks

  • ingonyama-zk/icicle - Production-ready ZK acceleration library with CUDA, Metal, and ROCm backends and iOS/Android support. GPU: Multi Op: MSM, NTT Lang: C++, Rust.

  • tracel-ai/cubecl - GPU compute framework for Rust using a proc-macro kernel language that compiles to WebGPU, CUDA, ROCm, and Metal. GPU: Multi Op: Field Arithmetic Lang: Rust.

  • lambdaclass/lambdaworks - Full ZK cryptography library with GPU-accelerated FFT, MSM, and Merkle tree backends for CUDA and Metal. GPU: Multi Op: FFT, MSM Lang: Rust.

  • mratsim/constantine - High-performance elliptic-curve and pairing library in Nim with experimental WebGPU and CUDA backends. GPU: Multi Op: EC Arithmetic, MSM Lang: Nim.

  • spaceandtimefdn/blitzar - MSM and Pedersen commitment library with CUDA and CPU backends. GPU: CUDA Op: MSM Lang: C++, Rust.

Projects by Cryptographic Operation

Multi-Scalar Multiplication (MSM)

Primary entries are in the GPU Technology sections above.

Project GPU Curve
ICME-Lab/msm-webgpu WebGPU BN254
td-kwj-zp2023/webgpu-msm-bls12-377 WebGPU BLS12-377
td-kwj-zp2023/webgpu-msm-twisted-edwards WebGPU BLS12-377 (Twisted Edwards)
demox-labs/webgpu-msm WebGPU BLS12-377
zkmopro/gpu-acceleration Metal BN254
ingonyama-zk/icicle Multi Multi-curve
lambdaclass/lambdaworks Multi Multi-curve
spaceandtimefdn/blitzar CUDA Multi-curve

Number Theoretic Transform (NTT / FFT)

Primary entries are in the GPU Technology sections above.

Project GPU Notes
demox-labs/webgpu-crypto WebGPU Research-stage
ligeroinc/ligero-prover WebGPU FFT-based polynomial IOPs
ingonyama-zk/icicle Multi Production-ready
lambdaclass/lambdaworks Multi Full ZK library

Field Arithmetic

Project GPU Notes
tracel-ai/cubecl Multi Kernel language targets any backend
mratsim/constantine Multi Nim runtime JIT

Hash Functions

Project GPU Notes
demox-labs/webgpu-crypto WebGPU Poseidon, Keccak research
ligeroinc/ligero-prover WebGPU Hash-based proof system

Full Proof Systems

Project GPU System Notes
penumbra-zone/webgpu WebGPU Groth16 Archived pioneer
ligeroinc/ligero-prover WebGPU Ligero Browser via Dawn/Emscripten
zkonduit/ezkl Metal PLONK / ZKML iOS/macOS
zkmopro/mopro Metal Multi-prover iOS mobile toolkit

Mobile and Edge Proving

  • zkmopro/mopro - Multi-prover mobile toolkit exposing a unified Swift/Kotlin API over Halo2, Noir, and Circom backends. GPU: Metal Op: Groth16, PLONK Lang: Rust.

  • zkonduit/ezkl - ZK machine-learning inference library on iOS and macOS, delivering ~2× speedup over the CPU path. GPU: Metal Op: ZKML, PLONK Lang: Rust.

Competitions and Benchmarks

ZPrize Entries

ZPrize is an open competition that accelerates ZK hardware and software. The 2023 WebGPU track (Prize #2) produced the fastest known browser-native MSM implementations;

all entries are listed in the WebGPU section above.

Benchmarks and Metrics

Learning Resources

Blog Posts and Articles

Research Papers

Related Lists

WebGPU and GPU Compute

Zero-Knowledge Proofs


Contributing

See CONTRIBUTING.md for the scope rules, tag vocabulary, and submission checklist.