gpu

目前在网络中零知识证明生成速度较慢,从几十秒到几分钟,不适合一些带有隐私功能钱包和匿名身份平台的应用。为了防止隐私泄露,这些证明生成无法外包给第三方。

目前命令行程序可以访问GPUs, FPGAs, ASICs等硬件设备,但是浏览器的资源很受限。目前已经有一些团队采用硬件加速zk, 例如Scroll 采用GPU 加速Prover, Ingonyama ICCLE 库 采用CUDA 加速Gnark 库。

WebGPU可以实现客户端的证明生成,允许开发基于浏览器的应用,可以利用GPU的高速以及并行计算能力。

WebGPU 于2017年由W3C 工作组开发,它定义了一组API, 可以访问GPU 算力资源。 目前标准越来越成熟,2023年4月,Google 升级Chrome 以支持WebGPU, 目前,Firfox, Safari, Edge 也提供了对WebGPU的支持。

WebGPU可以支持能用的计算,可以开发类似Rust的 WebGPU Shading Language (WGSL) 语言的程序,以定义GPU的运算。

对于GPU的计算和内存模型和CPU完全不一样,GPU首先需要考虑并行化问题。

GPU对密码算法的加速

  1. 有限域运算, 这是生成证明最基本的运算
  2. MSMs的加速,MSM(multi-scalar multiplication)约占到ZK 证明生成70%的计算量;
  3. NTT 加速,NTT(Number-theoretic transformations) 也占据ZK 证明生成相当一大部分计算量。
  4. 有效地和WebGPU, WASM , 和 Javascript 整合,有效协同CPU和GPU 运算的配合。

示例

根据 Poseidon 示例, 采用WebGPU 需要花费103ms, 采用CPU 需要1267 ms,

参考

https://www.w3.org/TR/webgpu/

https://hackmd.io/@weijiek/SysrYffq3#About-WebGPU

https://github.com/geometryresearch/wgsl-poseidon

https://geometry.xyz/notebook/accelerating-client-side-zk-with-webgpu



posted @ 2024-01-12 14:50  zJanly  阅读(5)  评论(0编辑  收藏  举报