Suyash Bagad
Research Team
Suyash Bagad
ZK Tokyo 2025
Ingonyama
Nooo..to make my ZK prover faster I need to accelerate MSM and NTT for the BN254 curve. I need GPU/CPU coordination and I'll need to learn CUDA while my prover is written in Rust. Ughhh
Modular
arithmetic
NTT
Merkle
trees
MSM
G1 & G2
ECNTT
Hashes
Vector
ops
EC Group operations
Linear
Algebra
Polynomial API
(Univariate and Multivariate)
C++
Rust
Go
Credit: Karthik Inbasekar
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Host
poly 1
poly 2
poly 10
Device
Can we perform computation and
data transfer simultaneously in icicle?
Host
poly 1
poly 2
poly 10
Device
One for compute,
one for data transfer
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
Host
poly 1
poly 2
poly 10
Device
poly 3
How did we read and write simultaneously?
Device
New input
Output
Device
New input
Output
Device
New input
Output
Device
New input
Output
Device
New input
Output
Device
New input
Output
v1
Accelerated primitives
v2
Polynomial API
v3
Multi-platform
By Suyash Bagad