ICICLE v3: Going multi-platform

Published on: 
Sep 3, 2024

ICICLE is a cryptography library designed to accelerate Zero-Knowledge Proofs (ZKPs).

We are excited to announce the release of ICICLE v3, a major update that introduces robust multi-platform support. Our latest version includes a powerful CPU backend, extending ICICLE’s exceptional performance and user-friendly polynomial API to standard processors, enabling greater flexibility and accessibility.

Key Highlights

This new version introduces several notable features, described below:

Multi-Platform Support
ICICLE v3 now runs seamlessly on CPUs, offering device-agnostic code that can transition between different hardware with minimal effort. You can now leverage multiple devices in a single application, specifying which device executes which portion of your code.

Enhanced Performance
We’ve optimized our GPU functionalities, resulting in faster execution times and reduced memory usage. Additionally, ICICLE now efficiently supports extra-large primitives, such as MSM and NTT, that exceed the GPU memory capacity. The number of batched tasks is no longer limited.

Extended Vector Operations
New vector-scalar operations are now available, including addition, subtraction, multiplication, and division. We’ve also added support for computing the sum and product of field element vectors.

Merkle Tree Enhancements
You can now combine different hash functions within the same tree, offering greater flexibility and security. Soon ICICLE will support more hash functions, including Blake2s/c and Keccak.

Multi-platform: The Vision

Since the introduction of our polynomial API in version 2, ICICLE has empowered users to express complex protocols and algorithms, running them end-to-end on Nvidia GPUs.

With our multi-platform capabilities, it will be possible to deploy ICICLE across data centers, mobile/desktop environments, exotic accelerators, or hybrid systems.

ICICLE high-level design concept

Over the coming months, we will continue to expand ICICLE’s backend support, with the goal of making it the standard software for implementing new cryptographic systems and protocols.

ICICLE is built to be future-proof, supporting all of our IP cores and future ASICs, ensuring it remains relevant as technology evolves. We invite other ZK ASIC companies to integrate with ICICLE as new backends, and enjoy a free, rich, and battle-tested software stack for their chips.

ICICLE: The PyTorch for ZK

Just as PyTorch provides a unified API that allows researchers to choose their hardware, ICICLE does the same for cryptographers. Whether you’re working with a CPU, GPU, or another device, ICICLE offers the flexibility to move between platforms with ease.

Here is a simple code comparison, demonstrating the mechanics of both frameworks for moving between devices — worth putting on your glasses :)

left: PyTorch, right: ICICLE v3. Our example is using bn254 NTT. PyTorch example is courtesy of ChatGPT

CPU Support — but why?

The first backend we have added support to, besides Nvidia GPUs, is CPU. We believe that we can squeeze much more performance from commodity CPUs, utilizing novel algorithms, parallel processing techniques and CPU specific on-die accelerators. Overall we estimate, on average, an order of magnitude difference compared to state of the art today.

We prioritize these processors, which are mass distributed, over the more exotic accelerators. When we think about what’s next in our roadmap, the equation we have in mind is ARM>TPU. Here’s why: Getting ZK to work properly and optimally on ARM processors can bring the next step in client side proving, by enabling ZK to run on any mobile. Google TPU, on the other hand, will likely offer more performance, but only for a restricted set of provers, and will be accessible only on Google Cloud.

Eventually (and soon!) we will support both, but our priority is to accelerate ZK on commodity hardware first.

ICICLE and ZKVM: A Comparison

We’ve seen an abundance of ZKVMs arrive on the market lately. ICICLE is very different from a ZKVM. Here we provide a brief comparison to solidify the differences.

For example, if you are a cryptographer working on accelerated data availability at EigenLayer, you can implement the DAS protocol from the ground up using ICICLE. Alternatively, If you’re an engineer building a ZK rollup, you might use a ZKVM for the prover part. While a ZKVM can be implemented using ICICLE, the reverse is not possible.

Build with ICICLE

With ICICLE v3, getting started is easier than ever. With CPU support, simply run ICICLE on any machine — no special setup is needed. For those seeking improved performance, a simple switch to GPU is all it takes. For comprehensive guides, examples, and detailed documentation, visit our ICICLE Documentation and our GitHub repository.

ICICLE is designed with scientists in mind. If you’re part of a research institution or an industry researcher, we’d love to collaborate. Don’t hesitate to reach out — we’re here to support your work.

light

Written by

Table of Contents

Want to discuss further?

Ingonyama is commited to developing hardware for a private future using Zero Knowledge Proofs.

Get in touch
Get our RSS feed