Skip to content

Commit 61da549

Browse files
committed
wip testing on cuda opt
1 parent c6dc897 commit 61da549

File tree

7 files changed

+147
-67
lines changed

7 files changed

+147
-67
lines changed

Cargo.lock

Lines changed: 65 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[workspace]
22
members = [
3-
"ceno_cli",
4-
"ceno_emul",
5-
"ceno_host",
6-
"ceno_rt",
7-
"ceno_zkvm",
8-
"examples-builder",
9-
"examples",
3+
"ceno_cli",
4+
"ceno_emul",
5+
"ceno_host",
6+
"ceno_rt",
7+
"ceno_zkvm",
8+
"examples-builder",
9+
"examples",
1010
]
1111
resolver = "2"
1212

@@ -58,13 +58,13 @@ thiserror = "1" # do we need this?
5858
thread_local = "1.1"
5959
tiny-keccak = { version = "2.0.2", features = ["keccak"] }
6060
tracing = { version = "0.1", features = [
61-
"attributes",
61+
"attributes",
6262
] }
6363
tracing-forest = { version = "0.1.6" }
6464
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
6565
uint = "0.8"
6666

67-
ceno_gpu = { path = "utils/cuda_hal", package = "cuda_hal" }
67+
ceno_gpu = { git = "ssh://[email protected]/scroll-tech/ceno-gpu.git", package = "cuda_hal", branch = "dev/integrate-into-ceno-as-dep" }
6868

6969
[profile.dev]
7070
lto = "thin"
@@ -79,16 +79,16 @@ opt-level = 3
7979
[profile.release]
8080
lto = "thin"
8181

82-
#[patch."ssh://[email protected]/scroll-tech/ceno-gpu.git"]
83-
#ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal" }
82+
[patch."ssh://git@github.com/scroll-tech/ceno-gpu.git"]
83+
ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal" }
8484

85-
#[patch."https://github.com/scroll-tech/gkr-backend"]
86-
#ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" }
87-
#mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" }
88-
#multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" }
89-
#p3 = { path = "../gkr-backend/crates/p3", package = "p3" }
90-
#poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" }
91-
#sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" }
92-
#transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" }
93-
#whir = { path = "../gkr-backend/crates/whir", package = "whir" }
94-
#witness = { path = "../gkr-backend/crates/witness", package = "witness" }
85+
[patch."https://github.com/scroll-tech/gkr-backend"]
86+
ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" }
87+
mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" }
88+
multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" }
89+
p3 = { path = "../gkr-backend/crates/p3", package = "p3" }
90+
poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" }
91+
sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" }
92+
transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" }
93+
whir = { path = "../gkr-backend/crates/whir", package = "whir" }
94+
witness = { path = "../gkr-backend/crates/witness", package = "witness" }

ceno_zkvm/benches/fibonacci.rs

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ use ceno_zkvm::{
1010
mod alloc;
1111
use criterion::*;
1212

13-
use ff_ext::BabyBearExt4;
13+
use ff_ext::{BabyBearExt4, GoldilocksExt2};
1414
use gkr_iop::cpu::default_backend_config;
1515

1616
use ceno_zkvm::scheme::verifier::ZKVMVerifier;
17+
#[cfg(feature = "gpu")]
18+
use gkr_iop::gpu::get_cuda_hal;
1719
use mpcs::BasefoldDefault;
1820
use transcript::BasicTranscript;
1921

@@ -28,7 +30,7 @@ criterion_main!(fibonacci_prove_group);
2830
const NUM_SAMPLES: usize = 10;
2931

3032
type Pcs = BasefoldDefault<E>;
31-
type E = BabyBearExt4;
33+
type E = GoldilocksExt2;
3234

3335
// Relevant init data for fibonacci run
3436
fn setup() -> (Program, Platform) {
@@ -45,33 +47,33 @@ fn fibonacci_prove(c: &mut Criterion) {
4547
let (max_num_variables, security_level) = default_backend_config();
4648
let backend = create_backend::<E, Pcs>(max_num_variables, security_level);
4749

48-
for max_steps in [1usize << 20, 1usize << 21, 1usize << 22] {
50+
for max_steps in [1usize << 22, 1usize << 23, 1usize << 24] {
4951
// retrive 1 << 20th fibonacci element >> max_steps
5052
let mut hints = CenoStdin::default();
5153
let _ = hints.write(&20);
5254
// estimate proof size data first
53-
let result = run_e2e_with_checkpoint::<E, Pcs, _, _>(
54-
create_prover(backend.clone()),
55-
program.clone(),
56-
platform.clone(),
57-
&Vec::from(&hints),
58-
&[],
59-
max_steps,
60-
Checkpoint::Complete,
61-
);
62-
let proof = result.proof.expect("PrepSanityCheck do not provide proof");
63-
let vk = result.vk.expect("PrepSanityCheck do not provide verifier");
64-
65-
println!("e2e proof {}", proof);
66-
let transcript = BasicTranscript::new(b"riscv");
67-
let verifier = ZKVMVerifier::<E, Pcs>::new(vk);
68-
assert!(
69-
verifier
70-
.verify_proof_halt(proof, transcript, false)
71-
.expect("verify proof return with error"),
72-
);
73-
println!();
74-
println!("max_steps = {}", max_steps);
55+
// let result = run_e2e_with_checkpoint::<E, Pcs, _, _>(
56+
// create_prover(backend.clone()),
57+
// program.clone(),
58+
// platform.clone(),
59+
// &Vec::from(&hints),
60+
// &[],
61+
// max_steps,
62+
// Checkpoint::Complete,
63+
// );
64+
// let proof = result.proof.expect("PrepSanityCheck do not provide proof");
65+
// let vk = result.vk.expect("PrepSanityCheck do not provide verifier");
66+
//
67+
// println!("e2e proof {}", proof);
68+
// let transcript = BasicTranscript::new(b"riscv");
69+
// let verifier = ZKVMVerifier::<E, Pcs>::new(vk);
70+
// assert!(
71+
// verifier
72+
// .verify_proof_halt(proof, transcript, false)
73+
// .expect("verify proof return with error"),
74+
// );
75+
// println!();
76+
// println!("max_steps = {}", max_steps);
7577

7678
// expand more input size once runtime is acceptable
7779
let mut group = c.benchmark_group(format!("fibonacci_max_steps_{}", max_steps));
@@ -86,6 +88,8 @@ fn fibonacci_prove(c: &mut Criterion) {
8688
|b| {
8789
b.iter_custom(|iters| {
8890
let mut time = Duration::new(0, 0);
91+
// #[cfg(feature = "gpu")]
92+
// let _unused = get_cuda_hal().unwrap();
8993
for _ in 0..iters {
9094
let result = run_e2e_with_checkpoint::<E, Pcs, _, _>(
9195
create_prover(backend.clone()),

ceno_zkvm/benches/keccak.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use ceno_zkvm::{
1010
mod alloc;
1111
use ceno_zkvm::scheme::verifier::ZKVMVerifier;
1212
use criterion::*;
13-
use ff_ext::BabyBearExt4;
13+
use ff_ext::{BabyBearExt4, GoldilocksExt2};
1414
use gkr_iop::cpu::default_backend_config;
1515
use mpcs::BasefoldDefault;
1616
use transcript::BasicTranscript;
@@ -26,7 +26,7 @@ criterion_main!(keccak_prove_group);
2626
const NUM_SAMPLES: usize = 10;
2727

2828
type Pcs = BasefoldDefault<E>;
29-
type E = BabyBearExt4;
29+
type E = GoldilocksExt2;
3030

3131
// Relevant init data for keccak run
3232
fn setup() -> (Program, Platform) {

0 commit comments

Comments
 (0)