Skip to content

Commit 60aade6

Browse files
authored
feat: use OSS ICICLE for GPU acceleration (version v3.2.2) (#1451)
1 parent e34e8ec commit 60aade6

File tree

7 files changed

+19
-15
lines changed

7 files changed

+19
-15
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ You can then toggle on or off icicle acceleration by providing the `WithIcicleAc
184184
proof, err := groth16.Prove(ccs, pk, secretWitness)
185185
```
186186

187-
For more information about prerequisites see the [ICICLE repo](https://github.com/ingonyama-zk/icicle). **NB! ICICLE CUDA kernels are covered by a special license for now. Follow the instructions to download and set up the kernels.**
187+
For more information about prerequisites see the [ICICLE repo](https://github.com/ingonyama-zk/icicle-gnark).
188188

189189
## Citing
190190

backend/backend.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func WithProverKZGFoldingHashFunction(hFunc hash.Hash) ProverOption {
127127
// tag and the ICICLE dependencies are properly installed. See [ICICLE] for
128128
// installation description.
129129
//
130-
// [ICICLE]: https://github.com/ingonyama-zk/icicle
130+
// [ICICLE]: https://github.com/ingonyama-zk/icicle-gnark
131131
func WithIcicleAcceleration() ProverOption {
132132
return func(pc *ProverConfig) error {
133133
pc.Accelerator = "icicle"

backend/groth16/bn254/icicle/device.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"sync"
88

99
"github.com/consensys/gnark/logger"
10-
icicle_runtime "github.com/ingonyama-zk/icicle/v3/wrappers/golang/runtime"
10+
icicle_runtime "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/runtime"
1111
)
1212

1313
var onceWarmUpDevice sync.Once
@@ -22,7 +22,11 @@ func warmUpDevice() {
2222
device := icicle_runtime.CreateDevice("CUDA", 0)
2323
log.Debug().Int32("id", device.Id).Str("type", device.GetDeviceType()).Msg("ICICLE device created")
2424
icicle_runtime.RunOnDevice(&device, func(args ...any) {
25-
err := icicle_runtime.WarmUpDevice()
25+
stream, err := icicle_runtime.CreateStream()
26+
if err != icicle_runtime.Success {
27+
panic(fmt.Sprintf("ICICLE create stream error: %s", err.AsString()))
28+
}
29+
err = icicle_runtime.WarmUpDevice(stream)
2630
if err != icicle_runtime.Success {
2731
panic(fmt.Sprintf("ICICLE device warmup error: %s", err.AsString()))
2832
}

backend/groth16/bn254/icicle/icicle.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ import (
2525
"github.com/consensys/gnark/internal/utils"
2626
"github.com/consensys/gnark/logger"
2727

28-
icicle_core "github.com/ingonyama-zk/icicle/v3/wrappers/golang/core"
29-
icicle_bn254 "github.com/ingonyama-zk/icicle/v3/wrappers/golang/curves/bn254"
30-
icicle_g2 "github.com/ingonyama-zk/icicle/v3/wrappers/golang/curves/bn254/g2"
31-
icicle_msm "github.com/ingonyama-zk/icicle/v3/wrappers/golang/curves/bn254/msm"
32-
icicle_ntt "github.com/ingonyama-zk/icicle/v3/wrappers/golang/curves/bn254/ntt"
33-
icicle_vecops "github.com/ingonyama-zk/icicle/v3/wrappers/golang/curves/bn254/vecOps"
34-
icicle_runtime "github.com/ingonyama-zk/icicle/v3/wrappers/golang/runtime"
28+
icicle_core "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/core"
29+
icicle_bn254 "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/curves/bn254"
30+
icicle_g2 "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/curves/bn254/g2"
31+
icicle_msm "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/curves/bn254/msm"
32+
icicle_ntt "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/curves/bn254/ntt"
33+
icicle_vecops "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/curves/bn254/vecOps"
34+
icicle_runtime "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/runtime"
3535

3636
fcs "github.com/consensys/gnark/frontend/cs"
3737
)

backend/groth16/bn254/icicle/provingkey.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/consensys/gnark-crypto/ecc/bn254/fr"
77
groth16_bn254 "github.com/consensys/gnark/backend/groth16/bn254"
88
cs "github.com/consensys/gnark/constraint/bn254"
9-
icicle_core "github.com/ingonyama-zk/icicle/v3/wrappers/golang/core"
9+
icicle_core "github.com/ingonyama-zk/icicle-gnark/v3/wrappers/golang/core"
1010
)
1111

1212
type deviceInfo struct {

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
github.com/google/go-cmp v0.6.0
1515
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8
1616
github.com/icza/bitio v1.1.0
17-
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b
17+
github.com/ingonyama-zk/icicle-gnark/v3 v3.2.2
1818
github.com/leanovate/gopter v0.2.11
1919
github.com/ronanh/intcomp v1.1.0
2020
github.com/rs/zerolog v1.33.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ github.com/icza/bitio v1.1.0/go.mod h1:0jGnlLAx8MKMr9VGnn/4YrvZiprkvBelsVIbA9Jjr
184184
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6 h1:8UsGZ2rr2ksmEru6lToqnXgA8Mz1DP11X4zSJ159C3k=
185185
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6/go.mod h1:xQig96I1VNBDIWGCdTt54nHt6EeI639SmHycLYL7FkA=
186186
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
187-
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b h1:AvQTK7l0PTHODD06PVQX1Tn2o29sRIaKIDOvTJmKurY=
188-
github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b/go.mod h1:e0JHb27/P6WorCJS3YolbY5XffS4PGBuoW38OthLkDs=
187+
github.com/ingonyama-zk/icicle-gnark/v3 v3.2.2 h1:B+aWVgAx+GlFLhtYjIaF0uGjU3rzpl99Wf9wZWt+Mq8=
188+
github.com/ingonyama-zk/icicle-gnark/v3 v3.2.2/go.mod h1:CH/cwcr21pPWH+9GtK/PFaa4OGTv4CtfkCKro6GpbRE=
189189
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
190190
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
191191
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=

0 commit comments

Comments
 (0)