{"id":50311148,"url":"https://github.com/zkmopro/awesome-client-side-gpu","last_synced_at":"2026-05-28T21:01:25.863Z","repository":{"id":340269343,"uuid":"1164571364","full_name":"zkmopro/awesome-client-side-gpu","owner":"zkmopro","description":"Awesome things around client-side GPU ecosystems.","archived":false,"fork":false,"pushed_at":"2026-03-23T09:55:39.000Z","size":41,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-24T07:23:19.881Z","etag":null,"topics":["awesome","awesome-list","browser","client-side","cryptography","metal","mobile","vulkan","w3c","webgpu","zk"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zkmopro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-23T08:35:44.000Z","updated_at":"2026-03-23T09:55:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zkmopro/awesome-client-side-gpu","commit_stats":null,"previous_names":["zkmopro/awesome-client-side-gpu"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zkmopro/awesome-client-side-gpu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fawesome-client-side-gpu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fawesome-client-side-gpu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fawesome-client-side-gpu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fawesome-client-side-gpu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zkmopro","download_url":"https://codeload.github.com/zkmopro/awesome-client-side-gpu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zkmopro%2Fawesome-client-side-gpu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33626142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-list","browser","client-side","cryptography","metal","mobile","vulkan","w3c","webgpu","zk"],"created_at":"2026-05-28T21:01:24.538Z","updated_at":"2026-05-28T21:01:25.849Z","avatar_url":"https://github.com/zkmopro.png","language":null,"funding_links":[],"categories":["Other Lists"],"sub_categories":["Vue Lists"],"readme":"# Awesome Client-Side GPU [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\n[![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)\n\n\u003e GPU-accelerated cryptography and zero-knowledge proof projects that run on **user devices** — browsers, phones, and desktops — not remote servers.\n\n## Contents\n\n\u003c!--lint disable double-link--\u003e\n- [What Is Client-Side GPU Proving](#what-is-client-side-gpu-proving)\n- [GPU API Quick-Reference](#gpu-api-quick-reference)\n- [Projects by GPU Technology](#projects-by-gpu-technology)\n  - [WebGPU (Browser-Native)](#webgpu-browser-native)\n  - [Metal (Apple Silicon / iOS / macOS)](#metal-apple-silicon--ios--macos)\n  - [Vulkan / ROCm / HIP (Cross-Platform Native)](#vulkan--rocm--hip-cross-platform-native)\n  - [Cross-Platform Frameworks](#cross-platform-frameworks)\n- [Projects by Cryptographic Operation](#projects-by-cryptographic-operation)\n  - [Multi-Scalar Multiplication (MSM)](#multi-scalar-multiplication-msm)\n  - [Number Theoretic Transform (NTT / FFT)](#number-theoretic-transform-ntt--fft)\n  - [Field Arithmetic](#field-arithmetic)\n  - [Hash Functions](#hash-functions)\n  - [Full Proof Systems](#full-proof-systems)\n- [Mobile and Edge Proving](#mobile-and-edge-proving)\n- [Competitions and Benchmarks](#competitions-and-benchmarks)\n  - [ZPrize Entries](#zprize-entries)\n  - [Benchmarks and Metrics](#benchmarks-and-metrics)\n- [Learning Resources](#learning-resources)\n  - [Blog Posts and Articles](#blog-posts-and-articles)\n  - [Research Papers](#research-papers)\n\u003c!--lint enable double-link--\u003e\n\n---\n\n## What Is Client-Side GPU Proving\n\nZero-knowledge proofs require heavy finite-field and elliptic-curve arithmetic that maps\nnaturally onto GPU parallelism. **Client-side GPU proving** brings these speedups to\nordinary user hardware — a browser tab, a smartphone, a laptop — so privacy-preserving\napplications never need to send sensitive inputs to a remote server.\n\nSix classes of operation benefit most from GPU acceleration:\n\n\u003c!--lint disable awesome-list-item--\u003e\n- **MSM (Multi-Scalar Multiplication)** — dominant cost in pairing-based systems (Groth16, PLONK).\n- **NTT (Number Theoretic Transform)** — core of STARK and FRI-based systems.\n- **Polynomial evaluation and matrix-vector multiplication** — high-throughput linear algebra.\n- **Merkle tree commitments** — batch hashing for hash-based proof schemes.\n- **Sumcheck protocol** — multivariate polynomial reductions (GKR, WHIR).\n- **Linear encoding and hashing** — used in Basefold and Brakedown commitment schemes.\n\u003c!--lint enable awesome-list-item--\u003e\n\nMSM and NTT yield 10–100× speedups over CPU on modern GPU hardware and are the primary\nfocus of most projects in this list.\n\n## GPU API Quick-Reference\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding--\u003e\n| API | Platforms | Primary Languages | Browser Support | Notes |\n|-----|-----------|-------------------|-----------------|-------|\n| **WebGPU** | Browser, native (via `wgpu`) | WGSL, Rust, JS/TS | Chrome 113+, Firefox (flag), Safari TP | W3C standard; replaces WebGL for compute |\n| **Metal** | iOS, macOS, Apple Silicon | MSL, Rust (metal-rs), Swift | No | 2–3× faster than OpenGL on Apple hardware |\n| **Vulkan Compute** | Windows, Linux, Android | GLSL, SPIR-V, Rust | No | Cross-vendor; lowest-level portable API |\n| **ROCm / HIP** | AMD GPUs (Linux) | HIP C++ | No | CUDA-compatible syntax; growing mobile support |\n| **CUDA** | NVIDIA GPUs | CUDA C++ | No | Highest throughput; server/desktop only |\n| **OpenCL** | Most GPUs | OpenCL C | No | Legacy; being superseded by Vulkan/WebGPU |\n\u003c!--lint enable table-pipe-alignment table-cell-padding--\u003e\n\n## Projects by GPU Technology\n\n### WebGPU (Browser-Native)\n\n- [ICME-Lab/msm-webgpu](https://github.com/ICME-Lab/msm-webgpu) - MSM over BN254 using the cuZK algorithm, compiled to WGSL shaders. `GPU: WebGPU` `Curve: BN254` `Op: MSM` `Lang: Rust`.\n\n- [td-kwj-zp2023/webgpu-msm-bls12-377](https://github.com/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`.\n\n- [td-kwj-zp2023/webgpu-msm-twisted-edwards](https://github.com/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`.\n\n- [demox-labs/webgpu-crypto](https://github.com/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`.\n\n- [demox-labs/webgpu-msm](https://github.com/demox-labs/webgpu-msm) - Baseline ZPrize 2023 reference for browser-native MSM over BLS12-377. `GPU: WebGPU` `Curve: BLS12-377` `Op: MSM` `Lang: TypeScript`.\n\n\u003c!--lint disable awesome-spell-check--\u003e\n- [penumbra-zone/webgpu](https://github.com/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`.\n\u003c!--lint enable awesome-spell-check--\u003e\n\n- [ligeroinc/ligero-prover](https://github.com/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++`.\n\n### Metal (Apple Silicon / iOS / macOS)\n\n- [zkmopro/gpu-acceleration](https://github.com/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`.\n\n- [geometryxyz/msl-secp256k1](https://github.com/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`.\n\n### Vulkan / ROCm / HIP (Cross-Platform Native)\n\n\u003c!--lint disable double-link--\u003e\nThe [Cross-Platform Frameworks](#cross-platform-frameworks) listed below all support Vulkan or ROCm as one of their backends.\n\u003c!--lint enable double-link--\u003e\n\n### Cross-Platform Frameworks\n\n- [ingonyama-zk/icicle](https://github.com/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`.\n\n- [tracel-ai/cubecl](https://github.com/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`.\n\n- [lambdaclass/lambdaworks](https://github.com/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`.\n\n- [mratsim/constantine](https://github.com/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`.\n\n- [spaceandtimefdn/blitzar](https://github.com/spaceandtimefdn/blitzar) - MSM and Pedersen commitment library with CUDA and CPU backends. `GPU: CUDA` `Op: MSM` `Lang: C++, Rust`.\n\n## Projects by Cryptographic Operation\n\n### Multi-Scalar Multiplication (MSM)\n\n*Primary entries are in the GPU Technology sections above.*\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding--\u003e\n| Project | GPU | Curve |\n|---------|-----|-------|\n| ICME-Lab/msm-webgpu | WebGPU | BN254 |\n| td-kwj-zp2023/webgpu-msm-bls12-377 | WebGPU | BLS12-377 |\n| td-kwj-zp2023/webgpu-msm-twisted-edwards | WebGPU | BLS12-377 (Twisted Edwards) |\n| demox-labs/webgpu-msm | WebGPU | BLS12-377 |\n| zkmopro/gpu-acceleration | Metal | BN254 |\n| ingonyama-zk/icicle | Multi | Multi-curve |\n| lambdaclass/lambdaworks | Multi | Multi-curve |\n| spaceandtimefdn/blitzar | CUDA | Multi-curve |\n\u003c!--lint enable table-pipe-alignment table-cell-padding--\u003e\n\n### Number Theoretic Transform (NTT / FFT)\n\n*Primary entries are in the GPU Technology sections above.*\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding--\u003e\n| Project | GPU | Notes |\n|---------|-----|-------|\n| demox-labs/webgpu-crypto | WebGPU | Research-stage |\n| ligeroinc/ligero-prover | WebGPU | FFT-based polynomial IOPs |\n| ingonyama-zk/icicle | Multi | Production-ready |\n| lambdaclass/lambdaworks | Multi | Full ZK library |\n\u003c!--lint enable table-pipe-alignment table-cell-padding--\u003e\n\n### Field Arithmetic\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding--\u003e\n| Project | GPU | Notes |\n|---------|-----|-------|\n| tracel-ai/cubecl | Multi | Kernel language targets any backend |\n| mratsim/constantine | Multi | Nim runtime JIT |\n\u003c!--lint enable table-pipe-alignment table-cell-padding--\u003e\n\n### Hash Functions\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding--\u003e\n| Project | GPU | Notes |\n|---------|-----|-------|\n| demox-labs/webgpu-crypto | WebGPU | Poseidon, Keccak research |\n| ligeroinc/ligero-prover | WebGPU | Hash-based proof system |\n\u003c!--lint enable table-pipe-alignment table-cell-padding--\u003e\n\n### Full Proof Systems\n\n\u003c!--lint disable table-pipe-alignment table-cell-padding awesome-spell-check--\u003e\n| Project | GPU | System | Notes |\n|---------|-----|--------|-------|\n| penumbra-zone/webgpu | WebGPU | Groth16 | Archived pioneer |\n| ligeroinc/ligero-prover | WebGPU | Ligero | Browser via Dawn/Emscripten |\n| zkonduit/ezkl | Metal | PLONK / ZKML | iOS/macOS |\n| zkmopro/mopro | Metal | Multi-prover | iOS mobile toolkit |\n\u003c!--lint enable table-pipe-alignment table-cell-padding awesome-spell-check--\u003e\n\n## Mobile and Edge Proving\n\n- [zkmopro/mopro](https://github.com/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`.\n\n- [zkonduit/ezkl](https://github.com/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`.\n\n## Competitions and Benchmarks\n\n### ZPrize Entries\n\n[ZPrize](https://www.zprize.io) is an open competition that accelerates ZK hardware and software.\nThe 2023 WebGPU track (Prize #2) produced the fastest known browser-native MSM implementations;\n\u003c!--lint disable double-link--\u003e\nall entries are listed in the [WebGPU](#webgpu-browser-native) section above.\n\u003c!--lint enable double-link--\u003e\n\n### Benchmarks and Metrics\n\n- [moven0831/field-ops-benchmarks](https://github.com/moven0831/field-ops-benchmarks) - Benchmarks for M31 and BN254 field operations across Metal and WebGPU backends. `GPU: Metal, WebGPU` `Op: Field Arithmetic`.\n\n- [ethproofs.org — client-side proving dashboard](https://ethproofs.org) - Live leaderboard tracking proof generation times and costs for client-side Ethereum proof systems across various hardware targets.\n\n## Learning Resources\n\n### Blog Posts and Articles\n\n- [Mopro: \"Metal MSM v2\"](https://zkmopro.org/blog/metal-msm-v2) - Technical walkthrough of the second-generation Metal MSM implementation in zkmopro/gpu-acceleration, explaining the 40–100× CPU speedup.\n\n- [zkSecurity: \"Accelerating ZK Proving with WebGPU\"](https://www.zksecurity.xyz/blog/posts/webgpu) - Explores how WebGPU NTT shaders accelerate Stwo STARK proving in the browser.\n\n- [Geometry Research: \"Accelerating Client-Side ZK with WebGPU\"](https://geometryresearch.xyz/notebook/accelerating-client-side-zk-with-webgpu) - Introduces the MSL secp256k1 work and frames the broader opportunity for WebGPU in client-side ZK proving.\n\n- [PSE: \"Client-Side GPU Acceleration for ZK\"](https://pse.dev/blog/client-side-gpu-everyday-ef-privacy) - Frames why client-side GPU proving matters for Ethereum privacy and surveys six key GPU-accelerable ZK primitives.\n\n### Research Papers\n\n- [cuZK: Accelerating Zero-Knowledge Proof with a Faster Parallel Multi-Scalar Multiplication Algorithm on GPUs](https://eprint.iacr.org/2022/1321) - IACR 2022/1321; introduces the cuZK MSM algorithm that underpins most WebGPU and Metal MSM implementations in this list. `Op: MSM`.\n\n## Related Lists\n\n### WebGPU and GPU Compute\n\n- [mikbry/awesome-webgpu](https://github.com/mikbry/awesome-webgpu) - Comprehensive WebGPU ecosystem list covering specs, demos, shader libraries, and tutorials.\n\n- [rofrol/awesome-wgpu](https://github.com/rofrol/awesome-wgpu) - Curated resources for `wgpu`, the primary Rust WebGPU implementation used by many projects in this list.\n\n- [jslee02/awesome-gpgpu](https://github.com/jslee02/awesome-gpgpu) - General-purpose GPU compute frameworks including CUDA, OpenCL, and Vulkan Compute.\n\n- [goabiaryan/awesome-gpu-engineering](https://github.com/goabiaryan/awesome-gpu-engineering) - GPU architecture, optimization techniques, and Metal Performance Shaders resources.\n\n### Zero-Knowledge Proofs\n\n- [matter-labs/awesome-zero-knowledge-proofs](https://github.com/matter-labs/awesome-zero-knowledge-proofs) - Comprehensive ZKP educational resources covering theory, tools, and applications.\n\n- [ventali/awesome-zk](https://github.com/ventali/awesome-zk) - ZK resources spanning zkVMs, L1/L2 protocols, developer tools, and benchmarks.\n\n- [odradev/awesome-zero-knowledge](https://github.com/odradev/awesome-zero-knowledge) - Blockchain-focused ZK resources with a companion weekly newsletter at [zknewsletter.com](https://zknewsletter.com).\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the scope rules, tag vocabulary, and submission checklist.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkmopro%2Fawesome-client-side-gpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzkmopro%2Fawesome-client-side-gpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzkmopro%2Fawesome-client-side-gpu/lists"}