本文介绍了ICICLE V1.6.0版本的一系列更新,包括稳定的Golang绑定、多GPU支持、向量运算API、Grumpkin曲线支持、NTT改进和MSM改进。这些更新旨在提升零知识证明(ZKP)加速的性能和效率,并扩展ICICLE的应用范围,如支持更大的电路和更多编程语言。
ICICLE 是一个使用支持 CUDA 的 GPU 进行 ZK 加速的库。
请在我们的文档网站上了解更多关于如何使用 ICICLE 的信息。
请继续阅读以了解详细信息。
直到最近,我们的主要重点一直是稳定 Rust 绑定。因此,Golang 绑定仅针对 ICICLE V0.1.0 保持最新。现在情况不再如此!
Golang 绑定现在稳定并且支持曲线:
期望 Golang 绑定支持 NTT、MSM 和 G2 操作。目前不支持 Poseidon Hash、向量运算、多 GPU 和 ECNTT 等功能,但很快就会添加。
我们还简化了构建过程;只需运行我们的脚本即可为特定曲线构建库。
./build <curve> [G2_enabled]
新的 Golang 绑定带有 core 和 cuda_rutime 包,它们提供通用的内存、流和设备管理,类似于你在 Rust 绑定中可能熟悉的内容。
借助多 GPU 支持,现在可以在 ICICLE 应用程序中使用多个 GPU。这意味着你可以支持更大的电路,在多个 GPU 上分配不同的工作负载,并将应用程序扩展到数据中心级别。
目前,多 GPU 仅支持 Rust 和 C++ 绑定;Golang 支持正在开发中。
主要特点:
为我们的 ICICLE 应用程序采用每个线程一个设备的架构,并提供多 GPU 支持,这一决策的驱动力在于几个令人信服的优势,这些优势与我们对性能、可伸缩性和易用性的目标相一致。这种架构允许开发人员使用多个 GPU,而无需担心内存管理和其他复杂性,因为每个 GPU 都在其自己的线程中进行管理。它也更容易调试和实施到现有的代码库中。
虽然有更高效的多 GPU 支持架构可以优化 GPU 工作负载,但它们更难调试和使用。随着更复杂的使用案例需要更高级的架构,我们的多 GPU 支持将随着时间的推移而发展。
要了解有关多 GPU 支持的更多信息,请阅读我们的文档。
我们新的向量运算 API 允许你减去、添加和乘标量数组。这些运算是模运算;模数 (p) 由标量字段类型自动确定。
use icicle_core::vec_ops::{add_scalars,sub_scalars,mul_scalars};
这些新操作支持所有字段。但是,它们目前仅在 Rust 和 C++ 绑定中可用。
use icicle_bn254::curve::{ScalarCfg, ScalarField};
use icicle_core::vec_ops::{add_scalars};
let test_size = 1 << 18;
let a: HostOrDeviceSlice<'_, ScalarField> = HostOrDeviceSlice::on_host(F::Config::generate_random(test_size));
let b: HostOrDeviceSlice<'_, ScalarField> = HostOrDeviceSlice::on_host(F::Config::generate_random(test_size));
let mut result: HostOrDeviceSlice<'_, ScalarField> = HostOrDeviceSlice::on_host(vec![F::zero(); test_size]);
let cfg = VecOpsConfig::default();
add_scalars(&a, &b, &mut result, &cfg).unwrap();
要了解有关新的向量运算 API 的更多信息并查看其用法的示例,请参阅我们的文档。
Grumpkin 曲线 专为 Aztec 2.0 协议设计,旨在与 BN-254 曲线协同工作,同时提供更高的计算效率和更小的证明大小。
Grumpkin 与 BN-254 兼容,无需通过切换到全新的曲线进行重大更改即可优化你的应用程序。
ICICLE 现在正式支持 Grumpkin 曲线。在此处了解更多信息这里。
混合基数 NTT 已经收到多次更新,现在支持:
MSM 算法的最新更新引入了零基点处理、显着的性能和内存优化以及标量排序和存储桶累积的改进。有关更深入的解释,你可以查看拉取请求评论 和 MSM 文档。
在 RTX 3090Ti 上的基准测试显示,更新后的 MSM 算法的性能提升范围为 1.1% 到 17.4%,并且对于较大的批处理大小,观察到了显着的增强。
要享受这些改进,只需确保你使用的是 ICICLE V1.4.0 或更高版本。
有关更改的完整列表,请查看我们的更改日志。
如果你有兴趣在预发布阶段测试这些功能,或者对设计考虑因素有任何想法,请联系 Immanuel。
Twitter: https://twitter.com/Ingo_zk
Documentation: https://dev.ingonyama.com/
YouTube: https://www.youtube.com/@ingo_zk
GitHub: https://github.com/ingonyama-zk
LinkedIn: https://www.linkedin.com/company/ingonyama
加入我们: https://www.ingonyama.com/career
- 原文链接: medium.com/@ingonyama/pr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!