From 530c90b5be3ee99a0df81fc623cc2120a6c4cacf Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Fri, 7 Nov 2025 10:02:56 +0800 Subject: [PATCH 01/13] gpu process sumcheck in dag form --- Cargo.lock | 89 ++++++++++++++++++++---- Cargo.toml | 60 ++++++++-------- gkr_iop/src/gkr/layer.rs | 10 +++ gkr_iop/src/gkr/layer/gpu/mod.rs | 57 ++++++++++----- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 9 ++- 5 files changed, 163 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f8e7a0523..ca36cc62a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1368,6 +1368,8 @@ name = "cuda_hal" version = "0.1.0" dependencies = [ "anyhow", + "cudarc", + "downcast-rs", "ff_ext", "itertools 0.13.0", "mpcs", @@ -1375,8 +1377,10 @@ dependencies = [ "p3", "rand 0.8.5", "rayon", + "sppark", + "sppark_plug", "sumcheck", - "thiserror 2.0.12", + "thiserror 1.0.69", "tracing", "transcript", "witness", @@ -1904,7 +1908,6 @@ dependencies = [ [[package]] name = "ff_ext" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "once_cell", "p3", @@ -2186,6 +2189,15 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.1", +] + [[package]] name = "iana-time-zone" version = "0.1.64" @@ -2642,6 +2654,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -2716,7 +2734,6 @@ dependencies = [ [[package]] name = "mpcs" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "bincode", "clap", @@ -2740,7 +2757,6 @@ dependencies = [ [[package]] name = "multilinear_extensions" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "either", "ff_ext", @@ -3061,7 +3077,6 @@ dependencies = [ [[package]] name = "p3" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "p3-air", "p3-baby-bear", @@ -3498,7 +3513,6 @@ dependencies = [ [[package]] name = "poseidon" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "ff_ext", "p3", @@ -4118,6 +4132,19 @@ dependencies = [ "semver 1.0.26", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.0.7" @@ -4127,7 +4154,7 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -4482,7 +4509,6 @@ dependencies = [ [[package]] name = "sp1-curves" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "cfg-if", "dashu", @@ -4517,6 +4543,25 @@ dependencies = [ "der", ] +[[package]] +name = "sppark" +version = "0.1.11" +dependencies = [ + "cc", + "which", +] + +[[package]] +name = "sppark_plug" +version = "0.1.0" +dependencies = [ + "cc", + "ff_ext", + "itertools 0.13.0", + "p3", + "sppark", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -4604,7 +4649,6 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sumcheck" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "either", "ff_ext", @@ -4622,7 +4666,6 @@ dependencies = [ [[package]] name = "sumcheck_macro" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "itertools 0.13.0", "p3", @@ -4703,7 +4746,7 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -5017,7 +5060,6 @@ dependencies = [ [[package]] name = "transcript" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "ff_ext", "itertools 0.13.0", @@ -5286,10 +5328,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + [[package]] name = "whir" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "bincode", "clap", @@ -5417,6 +5470,15 @@ dependencies = [ "windows-targets 0.53.4", ] +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -5576,7 +5638,6 @@ dependencies = [ [[package]] name = "witness" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" dependencies = [ "ff_ext", "multilinear_extensions", diff --git a/Cargo.toml b/Cargo.toml index 43f2aea9a..bc217f6da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,15 +1,15 @@ [workspace] members = [ - "ceno_cli", - "ceno_emul", - "ceno_host", - "ceno_rt", - "ceno_syscall", - "ceno_zkvm", - "derive", - "examples-builder", - "examples", - "guest_libs/*", + "ceno_cli", + "ceno_emul", + "ceno_host", + "ceno_rt", + "ceno_syscall", + "ceno_zkvm", + "derive", + "examples-builder", + "examples", + "guest_libs/*", ] resolver = "2" @@ -62,11 +62,11 @@ secp = "0.4.1" serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" smallvec = { version = "1.13.2", features = [ - "const_generics", - "const_new", - "serde", - "union", - "write", + "const_generics", + "const_new", + "serde", + "union", + "write", ] } strum = "0.26" strum_macros = "0.26" @@ -75,13 +75,13 @@ thiserror = "2" thread_local = "1.1" tiny-keccak = { version = "2.0.2", features = ["keccak"] } tracing = { version = "0.1", features = [ - "attributes", + "attributes", ] } tracing-forest = { version = "0.1.6" } tracing-subscriber = { version = "0.3", features = ["env-filter"] } uint = "0.8" -ceno_gpu = { path = "utils/cuda_hal", package = "cuda_hal" } +ceno_gpu = { git = "ssh://git@github.com/scroll-tech/ceno-gpu.git", package = "cuda_hal", branch = "main", default-features = false, features = ["bb31"] } [profile.dev] lto = "thin" @@ -96,17 +96,17 @@ opt-level = 3 [profile.release] lto = "thin" -# [patch."ssh://git@github.com/scroll-tech/ceno-gpu.git"] -# ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features=["bb31"] } +[patch."ssh://git@github.com/scroll-tech/ceno-gpu.git"] +ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features = ["bb31"] } -# [patch."https://github.com/scroll-tech/gkr-backend"] -# ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" } -# mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" } -# multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" } -# p3 = { path = "../gkr-backend/crates/p3", package = "p3" } -# poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" } -# sp1-curves = { path = "../gkr-backend/crates/curves", package = "sp1-curves" } -# sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" } -# transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" } -# whir = { path = "../gkr-backend/crates/whir", package = "whir" } -# witness = { path = "../gkr-backend/crates/witness", package = "witness" } +[patch."https://github.com/scroll-tech/gkr-backend"] +ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" } +mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" } +multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" } +p3 = { path = "../gkr-backend/crates/p3", package = "p3" } +poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" } +sp1-curves = { path = "../gkr-backend/crates/curves", package = "sp1-curves" } +sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" } +transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" } +whir = { path = "../gkr-backend/crates/whir", package = "whir" } +witness = { path = "../gkr-backend/crates/witness", package = "witness" } diff --git a/gkr_iop/src/gkr/layer.rs b/gkr_iop/src/gkr/layer.rs index 64eb747be..eb330c0f2 100644 --- a/gkr_iop/src/gkr/layer.rs +++ b/gkr_iop/src/gkr/layer.rs @@ -103,6 +103,15 @@ pub struct Layer { pub main_sumcheck_expression_monomial_terms: Option, Expression>>>, pub main_sumcheck_expression: Option>, + // flatten computation dag + pub main_sumcheck_expression_dag: Option<( + Vec, + Vec, + Vec>, + Vec>, + (usize, usize), + )>, + // rotation sumcheck expression, only optionally valid for zerocheck // store in 2 forms: expression & monomial pub rotation_sumcheck_expression_monomial_terms: @@ -175,6 +184,7 @@ impl Layer { expr_names, main_sumcheck_expression_monomial_terms: None, main_sumcheck_expression: None, + main_sumcheck_expression_dag: None, rotation_sumcheck_expression_monomial_terms: None, rotation_sumcheck_expression: None, }; diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index 5840111e7..85aaecd44 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -18,6 +18,7 @@ use multilinear_extensions::{ Expression, mle::{MultilinearExtension, Point}, monomial::Term, + utils::eval_by_expr_constant, }; use rayon::{ iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator}, @@ -232,23 +233,45 @@ impl> ZerocheckLayerProver layer.n_fixed, layer.n_instance, ); + + let ( + dag, + instance_scalar_expr, + challenges_expr, + constant_expr, + (max_degree, max_dag_depth), + ) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); + + // format: pub_io ++ challenge ++ constant + let term_coefficients = instance_scalar_expr + .iter() + .map(|s| pub_io_evals[s.id]) + .copied() + .chain( + challenges_expr + .iter() + .map(|c| eval_by_expr_constant(pub_io_evals, challenges, c)) + .chain(constant_expr.iter().copied()) + .map(|either_v| match either_v { + Either::Left(base_field_val) => E::from(base_field_val), + Either::Right(ext_field_val) => ext_field_val, + }), + ) + .chain() + .collect_vec(); + // Calculate max_num_var and max_degree from the extracted relationships - let (term_coefficients, mle_indices_per_term, mle_size_info) = - extract_mle_relationships_from_monomial_terms( - &layer - .main_sumcheck_expression_monomial_terms - .clone() - .unwrap(), - &all_witins_gpu, - &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), - &main_sumcheck_challenges, - ); + // let (term_coefficients, mle_indices_per_term, mle_size_info) = + // extract_mle_relationships_from_monomial_terms( + // &layer + // .main_sumcheck_expression_monomial_terms + // .clone() + // .unwrap(), + // &all_witins_gpu, + // &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), + // &main_sumcheck_challenges, + // ); let max_num_var = max_num_variables; - let max_degree = mle_indices_per_term - .iter() - .map(|indices| indices.len()) - .max() - .unwrap_or(0); // Convert types for GPU function Call let basic_tr: &mut BasicTranscript = @@ -262,10 +285,10 @@ impl> ZerocheckLayerProver .sumcheck .prove_generic_sumcheck_gpu( &cuda_hal, + dag, + max_dag_depth, all_witins_gpu_type_gl64, - &mle_size_info, &term_coefficients_gl64, - &mle_indices_per_term, max_num_var, max_degree, basic_tr, diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index 95069b5e9..9277ba64c 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -5,7 +5,9 @@ use multilinear_extensions::{ macros::{entered_span, exit_span}, mle::{IntoMLE, Point}, monomialize_expr_to_wit_terms, - utils::{eval_by_expr, eval_by_expr_with_instance, expr_convert_to_witins}, + utils::{ + eval_by_expr, eval_by_expr_with_instance, expr_compression_to_dag, expr_convert_to_witins, + }, virtual_poly::VPAuxInfo, }; use p3::field::{FieldAlgebra, dot_product}; @@ -166,6 +168,11 @@ impl ZerocheckLayer for Layer { self.n_instance, ); self.main_sumcheck_expression = Some(zero_expr); + self.main_sumcheck_expression_dag = Some(expr_compression_to_dag( + self.main_sumcheck_expression.as_ref().unwrap(), + self.n_instance, + self.n_instance + 2, // global challenges: alpha, beta + )); self.main_sumcheck_expression_monomial_terms = self .main_sumcheck_expression .as_ref() From 3d27546c48ae8e3b544a113645be6b698d0ff762 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Fri, 7 Nov 2025 16:27:20 +0800 Subject: [PATCH 02/13] build pass --- gkr_iop/src/gkr/layer/gpu/mod.rs | 20 ++++++++++++-------- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 4 +++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index 85aaecd44..8430b8f19 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -15,7 +15,7 @@ use ff_ext::ExtensionField; use itertools::{Itertools, chain}; use mpcs::PolynomialCommitmentScheme; use multilinear_extensions::{ - Expression, + Expression, Instance, mle::{MultilinearExtension, Point}, monomial::Term, utils::eval_by_expr_constant, @@ -245,19 +245,23 @@ impl> ZerocheckLayerProver // format: pub_io ++ challenge ++ constant let term_coefficients = instance_scalar_expr .iter() - .map(|s| pub_io_evals[s.id]) - .copied() + .map(|Instance(id)| pub_io_evals[*id]) .chain( challenges_expr .iter() - .map(|c| eval_by_expr_constant(pub_io_evals, challenges, c)) + .map(|c| { + eval_by_expr_constant( + &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), + &main_sumcheck_challenges, + c, + ) + }) .chain(constant_expr.iter().copied()) .map(|either_v| match either_v { Either::Left(base_field_val) => E::from(base_field_val), Either::Right(ext_field_val) => ext_field_val, }), ) - .chain() .collect_vec(); // Calculate max_num_var and max_degree from the extracted relationships @@ -283,14 +287,14 @@ impl> ZerocheckLayerProver let all_witins_gpu_type_gl64 = all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); let (proof_gpu, evals_gpu, challenges_gpu) = cuda_hal .sumcheck - .prove_generic_sumcheck_gpu( + .prove_generic_sumcheck_gpu_v2( &cuda_hal, dag, - max_dag_depth, + *max_dag_depth, all_witins_gpu_type_gl64, &term_coefficients_gl64, max_num_var, - max_degree, + *max_degree, basic_tr, ) .unwrap(); diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index 9277ba64c..8b78e1e22 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -171,7 +171,9 @@ impl ZerocheckLayer for Layer { self.main_sumcheck_expression_dag = Some(expr_compression_to_dag( self.main_sumcheck_expression.as_ref().unwrap(), self.n_instance, - self.n_instance + 2, // global challenges: alpha, beta + self.n_instance + + 2 /* global challenges: alpha, beta */ + + alpha_pows_expr.len(), )); self.main_sumcheck_expression_monomial_terms = self .main_sumcheck_expression From 126722ae2e9b07e51b03e55205f0e9206132cb81 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Fri, 7 Nov 2025 19:52:29 +0800 Subject: [PATCH 03/13] e2e pass --- gkr_iop/src/gkr/layer/gpu/mod.rs | 11 ----------- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 4 ---- 2 files changed, 15 deletions(-) diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index 8430b8f19..df32a5073 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -264,17 +264,6 @@ impl> ZerocheckLayerProver ) .collect_vec(); - // Calculate max_num_var and max_degree from the extracted relationships - // let (term_coefficients, mle_indices_per_term, mle_size_info) = - // extract_mle_relationships_from_monomial_terms( - // &layer - // .main_sumcheck_expression_monomial_terms - // .clone() - // .unwrap(), - // &all_witins_gpu, - // &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), - // &main_sumcheck_challenges, - // ); let max_num_var = max_num_variables; // Convert types for GPU function Call diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index 8b78e1e22..a5338bda0 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -170,10 +170,6 @@ impl ZerocheckLayer for Layer { self.main_sumcheck_expression = Some(zero_expr); self.main_sumcheck_expression_dag = Some(expr_compression_to_dag( self.main_sumcheck_expression.as_ref().unwrap(), - self.n_instance, - self.n_instance - + 2 /* global challenges: alpha, beta */ - + alpha_pows_expr.len(), )); self.main_sumcheck_expression_monomial_terms = self .main_sumcheck_expression From dd59acb388dcddc78a0f7377f638f378033383b7 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Fri, 7 Nov 2025 21:41:14 +0800 Subject: [PATCH 04/13] show dag stats --- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 46 ++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index a5338bda0..9aac44904 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -168,9 +168,49 @@ impl ZerocheckLayer for Layer { self.n_instance, ); self.main_sumcheck_expression = Some(zero_expr); - self.main_sumcheck_expression_dag = Some(expr_compression_to_dag( - self.main_sumcheck_expression.as_ref().unwrap(), - )); + self.main_sumcheck_expression_dag = Some({ + let ( + dag, + instance_scalar_expr, + challenges_expr, + constant_expr, + (max_degree, max_dag_depth), + ) = expr_compression_to_dag(self.main_sumcheck_expression.as_ref().unwrap()); + + let mut traverse_dag_id = 0; + let mut num_add = 0; + let mut num_mul = 0; + while traverse_dag_id < dag.len() { + match dag[traverse_dag_id] { + 0 => traverse_dag_id += 2, // skip wit index + 1 => traverse_dag_id += 2, // skip scalar index + 2 => { + num_add += 1; + traverse_dag_id += 1; + } + 3 => { + num_mul += 1; + traverse_dag_id += 1; + } + _ => unreachable!(), + } + } + + tracing::debug!( + "layer name {} dag got num_add {num_add} num_mul {num_mul} max_degree {max_degree} \ + max_dag_depth {max_dag_depth} num_scalar {}", + self.name, + instance_scalar_expr.len() + challenges_expr.len() + constant_expr.len(), + ); + + ( + dag, + instance_scalar_expr, + challenges_expr, + constant_expr, + (max_degree, max_dag_depth), + ) + }); self.main_sumcheck_expression_monomial_terms = self .main_sumcheck_expression .as_ref() From dcec3117f8bd2fd5306ef69ad3e0c7bcbf1fae33 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Sun, 9 Nov 2025 23:19:35 +0800 Subject: [PATCH 05/13] optimize Dag with Node struct --- gkr_iop/src/gkr/layer.rs | 4 +++- gkr_iop/src/gkr/layer/gpu/mod.rs | 2 ++ gkr_iop/src/gkr/layer/zerocheck_layer.rs | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gkr_iop/src/gkr/layer.rs b/gkr_iop/src/gkr/layer.rs index eb330c0f2..cb3deb7ce 100644 --- a/gkr_iop/src/gkr/layer.rs +++ b/gkr_iop/src/gkr/layer.rs @@ -6,6 +6,7 @@ use multilinear_extensions::{ Expression, Instance, StructuralWitIn, ToExpr, mle::{Point, PointAndEval}, monomial::Term, + utils::Node, }; use p3::field::FieldAlgebra; use rayon::iter::{IntoParallelIterator, IntoParallelRefIterator}; @@ -105,10 +106,11 @@ pub struct Layer { // flatten computation dag pub main_sumcheck_expression_dag: Option<( - Vec, + Vec, Vec, Vec>, Vec>, + u32, (usize, usize), )>, diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index df32a5073..8309584df 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -239,6 +239,7 @@ impl> ZerocheckLayerProver instance_scalar_expr, challenges_expr, constant_expr, + stack_top, (max_degree, max_dag_depth), ) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); @@ -284,6 +285,7 @@ impl> ZerocheckLayerProver &term_coefficients_gl64, max_num_var, *max_degree, + *stack_top, basic_tr, ) .unwrap(); diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index 9aac44904..f3fa4a4b2 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -174,6 +174,7 @@ impl ZerocheckLayer for Layer { instance_scalar_expr, challenges_expr, constant_expr, + stack_top, (max_degree, max_dag_depth), ) = expr_compression_to_dag(self.main_sumcheck_expression.as_ref().unwrap()); @@ -181,7 +182,7 @@ impl ZerocheckLayer for Layer { let mut num_add = 0; let mut num_mul = 0; while traverse_dag_id < dag.len() { - match dag[traverse_dag_id] { + match dag[traverse_dag_id].op { 0 => traverse_dag_id += 2, // skip wit index 1 => traverse_dag_id += 2, // skip scalar index 2 => { @@ -208,6 +209,7 @@ impl ZerocheckLayer for Layer { instance_scalar_expr, challenges_expr, constant_expr, + stack_top, (max_degree, max_dag_depth), ) }); From 98f5d9ec734f0538efce9b7ac9fd7e74ff671934 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Mon, 10 Nov 2025 21:16:18 +0800 Subject: [PATCH 06/13] dag version only on larger circuit --- gkr_iop/src/gkr/layer/gpu/mod.rs | 149 +++++++++++++++-------- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 14 +-- 2 files changed, 103 insertions(+), 60 deletions(-) diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index 8309584df..f8a8805dc 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -234,61 +234,106 @@ impl> ZerocheckLayerProver layer.n_instance, ); - let ( - dag, - instance_scalar_expr, - challenges_expr, - constant_expr, - stack_top, - (max_degree, max_dag_depth), - ) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); + let (proof_gpu, evals_gpu, challenges_gpu) = if layer.exprs.len() > 200 { + let ( + dag, + instance_scalar_expr, + challenges_expr, + constant_expr, + stack_top, + (max_degree, max_dag_depth), + ) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); - // format: pub_io ++ challenge ++ constant - let term_coefficients = instance_scalar_expr - .iter() - .map(|Instance(id)| pub_io_evals[*id]) - .chain( - challenges_expr - .iter() - .map(|c| { - eval_by_expr_constant( - &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), - &main_sumcheck_challenges, - c, - ) - }) - .chain(constant_expr.iter().copied()) - .map(|either_v| match either_v { - Either::Left(base_field_val) => E::from(base_field_val), - Either::Right(ext_field_val) => ext_field_val, - }), - ) - .collect_vec(); + // format: pub_io ++ challenge ++ constant + let term_coefficients = instance_scalar_expr + .iter() + .map(|Instance(id)| pub_io_evals[*id]) + .chain( + challenges_expr + .iter() + .map(|c| { + eval_by_expr_constant( + &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), + &main_sumcheck_challenges, + c, + ) + }) + .chain(constant_expr.iter().copied()) + .map(|either_v| match either_v { + Either::Left(base_field_val) => E::from(base_field_val), + Either::Right(ext_field_val) => ext_field_val, + }), + ) + .collect_vec(); - let max_num_var = max_num_variables; + let max_num_var = max_num_variables; + + // Convert types for GPU function Call + let basic_tr: &mut BasicTranscript = + unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; + let term_coefficients_gl64: Vec = + unsafe { std::mem::transmute(term_coefficients) }; + let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = + unsafe { std::mem::transmute(all_witins_gpu) }; + let all_witins_gpu_type_gl64 = + all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); + cuda_hal + .sumcheck + .prove_generic_sumcheck_gpu_v2( + &cuda_hal, + dag, + *max_dag_depth, + all_witins_gpu_type_gl64, + &term_coefficients_gl64, + max_num_var, + *max_degree, + *stack_top, + basic_tr, + ) + .unwrap() + } else { + // Calculate max_num_var and max_degree from the extracted relationships + let (term_coefficients, mle_indices_per_term, mle_size_info) = + extract_mle_relationships_from_monomial_terms( + &layer + .main_sumcheck_expression_monomial_terms + .clone() + .unwrap(), + &all_witins_gpu, + &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), + &main_sumcheck_challenges, + ); + let max_num_var = max_num_variables; + let max_degree = mle_indices_per_term + .iter() + .map(|indices| indices.len()) + .max() + .unwrap_or(0); + + // Convert types for GPU function Call + let basic_tr: &mut BasicTranscript = + unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; + let term_coefficients_gl64: Vec = + unsafe { std::mem::transmute(term_coefficients) }; + let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = + unsafe { std::mem::transmute(all_witins_gpu) }; + let all_witins_gpu_type_gl64 = + all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); + cuda_hal + .sumcheck + .prove_generic_sumcheck_gpu( + &cuda_hal, + all_witins_gpu_type_gl64, + &mle_size_info, + &term_coefficients_gl64, + &mle_indices_per_term, + max_num_var, + max_degree, + basic_tr, + ) + .unwrap() + }; - // Convert types for GPU function Call - let basic_tr: &mut BasicTranscript = - unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; - let term_coefficients_gl64: Vec = - unsafe { std::mem::transmute(term_coefficients) }; - let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = - unsafe { std::mem::transmute(all_witins_gpu) }; - let all_witins_gpu_type_gl64 = all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); - let (proof_gpu, evals_gpu, challenges_gpu) = cuda_hal - .sumcheck - .prove_generic_sumcheck_gpu_v2( - &cuda_hal, - dag, - *max_dag_depth, - all_witins_gpu_type_gl64, - &term_coefficients_gl64, - max_num_var, - *max_degree, - *stack_top, - basic_tr, - ) - .unwrap(); let evals_gpu = evals_gpu.into_iter().flatten().collect_vec(); let row_challenges = challenges_gpu.iter().map(|c| c.elements).collect_vec(); diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index f3fa4a4b2..2e6b862eb 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -178,22 +178,20 @@ impl ZerocheckLayer for Layer { (max_degree, max_dag_depth), ) = expr_compression_to_dag(self.main_sumcheck_expression.as_ref().unwrap()); - let mut traverse_dag_id = 0; let mut num_add = 0; let mut num_mul = 0; - while traverse_dag_id < dag.len() { - match dag[traverse_dag_id].op { - 0 => traverse_dag_id += 2, // skip wit index - 1 => traverse_dag_id += 2, // skip scalar index + + for node in &dag { + match node.op { + 0 => (), // skip wit index + 1 => (), // skip scalar index 2 => { num_add += 1; - traverse_dag_id += 1; } 3 => { num_mul += 1; - traverse_dag_id += 1; } - _ => unreachable!(), + op => panic!("unknown op {op}"), } } From d09d75b4275bfba7e7265e507c3bffb036239c93 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Tue, 11 Nov 2025 14:35:40 +0800 Subject: [PATCH 07/13] switch to new dag api --- gkr_iop/src/gkr/layer.rs | 10 +-- gkr_iop/src/gkr/layer/gpu/mod.rs | 38 +++------ gkr_iop/src/gkr/layer/zerocheck_layer.rs | 101 ++++++++++++----------- 3 files changed, 65 insertions(+), 84 deletions(-) diff --git a/gkr_iop/src/gkr/layer.rs b/gkr_iop/src/gkr/layer.rs index cb3deb7ce..73a7f561d 100644 --- a/gkr_iop/src/gkr/layer.rs +++ b/gkr_iop/src/gkr/layer.rs @@ -105,14 +105,8 @@ pub struct Layer { pub main_sumcheck_expression: Option>, // flatten computation dag - pub main_sumcheck_expression_dag: Option<( - Vec, - Vec, - Vec>, - Vec>, - u32, - (usize, usize), - )>, + // (dag, coeffs, final_out_index, max_dag_depth, max_degree) + pub main_sumcheck_expression_dag: Option<(Vec, Vec>, u32, usize, usize)>, // rotation sumcheck expression, only optionally valid for zerocheck // store in 2 forms: expression & monomial diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index f8a8805dc..f77a0dc48 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -15,7 +15,7 @@ use ff_ext::ExtensionField; use itertools::{Itertools, chain}; use mpcs::PolynomialCommitmentScheme; use multilinear_extensions::{ - Expression, Instance, + Expression, mle::{MultilinearExtension, Point}, monomial::Term, utils::eval_by_expr_constant, @@ -235,35 +235,19 @@ impl> ZerocheckLayerProver ); let (proof_gpu, evals_gpu, challenges_gpu) = if layer.exprs.len() > 200 { - let ( - dag, - instance_scalar_expr, - challenges_expr, - constant_expr, - stack_top, - (max_degree, max_dag_depth), - ) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); + // (dag, coeffs, final_out_index, max_dag_depth, max_degree) + let (dag, coeffs, stack_top, max_dag_depth, max_degree) = + layer.main_sumcheck_expression_dag.as_ref().unwrap(); + let pub_io_eval_scalar = pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(); // format: pub_io ++ challenge ++ constant - let term_coefficients = instance_scalar_expr + let term_coefficients = coeffs .iter() - .map(|Instance(id)| pub_io_evals[*id]) - .chain( - challenges_expr - .iter() - .map(|c| { - eval_by_expr_constant( - &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), - &main_sumcheck_challenges, - c, - ) - }) - .chain(constant_expr.iter().copied()) - .map(|either_v| match either_v { - Either::Left(base_field_val) => E::from(base_field_val), - Either::Right(ext_field_val) => ext_field_val, - }), - ) + .map(|c| eval_by_expr_constant(&pub_io_eval_scalar, &main_sumcheck_challenges, c)) + .map(|either_v| match either_v { + Either::Left(base_field_val) => E::from(base_field_val), + Either::Right(ext_field_val) => ext_field_val, + }) .collect_vec(); let max_num_var = max_num_variables; diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index d5005b557..4986de7f6 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -6,7 +6,8 @@ use multilinear_extensions::{ mle::{IntoMLE, Point}, monomialize_expr_to_wit_terms, utils::{ - eval_by_expr, eval_by_expr_with_instance, expr_compression_to_dag, expr_convert_to_witins, + build_factored_dag_commutative, eval_by_expr, eval_by_expr_with_instance, + expr_convert_to_witins, }, virtual_poly::VPAuxInfo, }; @@ -167,61 +168,63 @@ impl ZerocheckLayer for Layer { self.n_fixed as WitnessId, self.n_instance, ); - tracing::debug!("main sumcheck degree: {}", zero_expr.degree()); + let zero_expr_degree = zero_expr.degree(); self.main_sumcheck_expression = Some(zero_expr); - self.main_sumcheck_expression_dag = Some({ - let ( - dag, - instance_scalar_expr, - challenges_expr, - constant_expr, - stack_top, - (max_degree, max_dag_depth), - ) = expr_compression_to_dag(self.main_sumcheck_expression.as_ref().unwrap()); - - let mut num_add = 0; - let mut num_mul = 0; - - for node in &dag { - match node.op { - 0 => (), // skip wit index - 1 => (), // skip scalar index - 2 => { - num_add += 1; - } - 3 => { - num_mul += 1; - } - op => panic!("unknown op {op}"), - } - } - - tracing::debug!( - "layer name {} dag got num_add {num_add} num_mul {num_mul} max_degree {max_degree} \ - max_dag_depth {max_dag_depth} num_scalar {}", - self.name, - instance_scalar_expr.len() + challenges_expr.len() + constant_expr.len(), - ); - - ( - dag, - instance_scalar_expr, - challenges_expr, - constant_expr, - stack_top, - (max_degree, max_dag_depth), - ) - }); self.main_sumcheck_expression_monomial_terms = self .main_sumcheck_expression .as_ref() .map(|expr| expr.get_monomial_terms()); - tracing::debug!( - "main sumcheck monomial terms count: {}", + + { self.main_sumcheck_expression_monomial_terms .as_ref() - .map_or(0, |terms| terms.len()), - ); + .map(|terms| { + let num_mul: usize = terms.iter().map(|term| term.product.len()).sum(); + let num_add = terms.iter().len() - 1; + + tracing::debug!( + "layer name {} monomial num_add: {num_add} num_mul: {num_mul}", + self.name, + ); + }); + } + + self.main_sumcheck_expression_dag = { + self.main_sumcheck_expression_monomial_terms + .as_ref() + .map(|terms| { + // selector are structural witin, which is used to be the largest id. + let (dag, coeffs, Some(final_out_index), max_dag_depth) = build_factored_dag_commutative(terms, false) else { panic!() }; + let stack_top = final_out_index + 1; + let max_degree = zero_expr_degree; + + let mut num_add = 0; + let mut num_mul = 0; + + for node in &dag { + match node.op { + 0 => (), // skip wit index + 1 => (), // skip scalar index + 2 => { + num_add += 1; + } + 3 => { + num_mul += 1; + } + op => panic!("unknown op {op}"), + } + } + + tracing::debug!( + "layer name {} dag got num_add {num_add} num_mul {num_mul} max_degree {max_degree} \ + max_dag_depth {max_dag_depth} num_scalar {} final_out_index {final_out_index}", + self.name, + coeffs.len(), + ); + (dag, coeffs, stack_top, max_dag_depth as usize, zero_expr_degree) + }) + }; + exit_span!(span); } From bb3a88e4a096852d7ac6de92917a4da52249834d Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Wed, 12 Nov 2025 10:01:24 +0800 Subject: [PATCH 08/13] refactor with generic sumcheck api --- gkr_iop/src/gkr/layer/gpu/mod.rs | 139 +++++++++++++------------------ 1 file changed, 60 insertions(+), 79 deletions(-) diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index f77a0dc48..f660ac95b 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -234,89 +234,66 @@ impl> ZerocheckLayerProver layer.n_instance, ); - let (proof_gpu, evals_gpu, challenges_gpu) = if layer.exprs.len() > 200 { - // (dag, coeffs, final_out_index, max_dag_depth, max_degree) - let (dag, coeffs, stack_top, max_dag_depth, max_degree) = - layer.main_sumcheck_expression_dag.as_ref().unwrap(); + // process dag + // (dag, coeffs, final_out_index, max_dag_depth, max_degree) + let (dag, dag_coeffs, stack_top, max_dag_depth, max_degree) = + layer.main_sumcheck_expression_dag.as_ref().unwrap(); - let pub_io_eval_scalar = pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(); - // format: pub_io ++ challenge ++ constant - let term_coefficients = coeffs - .iter() - .map(|c| eval_by_expr_constant(&pub_io_eval_scalar, &main_sumcheck_challenges, c)) - .map(|either_v| match either_v { - Either::Left(base_field_val) => E::from(base_field_val), - Either::Right(ext_field_val) => ext_field_val, - }) - .collect_vec(); + let pub_io_eval_scalar = pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(); + // format: pub_io ++ challenge ++ constant + let dag_coeffs = dag_coeffs + .iter() + .map(|c| eval_by_expr_constant(&pub_io_eval_scalar, &main_sumcheck_challenges, c)) + .map(|either_v| match either_v { + Either::Left(base_field_val) => E::from(base_field_val), + Either::Right(ext_field_val) => ext_field_val, + }) + .collect_vec(); - let max_num_var = max_num_variables; + // process monomial terms + // Calculate max_num_var and max_degree from the extracted relationships + let (monomial_coefficients, mle_indices_per_term, mle_size_info) = + extract_mle_relationships_from_monomial_terms( + &layer + .main_sumcheck_expression_monomial_terms + .clone() + .unwrap(), + &all_witins_gpu, + &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), + &main_sumcheck_challenges, + ); - // Convert types for GPU function Call - let basic_tr: &mut BasicTranscript = - unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; - let term_coefficients_gl64: Vec = - unsafe { std::mem::transmute(term_coefficients) }; - let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = - unsafe { std::mem::transmute(all_witins_gpu) }; - let all_witins_gpu_type_gl64 = - all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); - cuda_hal - .sumcheck - .prove_generic_sumcheck_gpu_v2( - &cuda_hal, - dag, - *max_dag_depth, - all_witins_gpu_type_gl64, - &term_coefficients_gl64, - max_num_var, - *max_degree, - *stack_top, - basic_tr, - ) - .unwrap() - } else { - // Calculate max_num_var and max_degree from the extracted relationships - let (term_coefficients, mle_indices_per_term, mle_size_info) = - extract_mle_relationships_from_monomial_terms( - &layer - .main_sumcheck_expression_monomial_terms - .clone() - .unwrap(), - &all_witins_gpu, - &pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(), - &main_sumcheck_challenges, - ); - let max_num_var = max_num_variables; - let max_degree = mle_indices_per_term - .iter() - .map(|indices| indices.len()) - .max() - .unwrap_or(0); + let max_num_var = max_num_variables; + + // Convert types for GPU function Call + let monomial_coefficients: Vec = + unsafe { std::mem::transmute(monomial_coefficients) }; - // Convert types for GPU function Call - let basic_tr: &mut BasicTranscript = - unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; - let term_coefficients_gl64: Vec = - unsafe { std::mem::transmute(term_coefficients) }; - let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = - unsafe { std::mem::transmute(all_witins_gpu) }; - let all_witins_gpu_type_gl64 = - all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); - cuda_hal - .sumcheck - .prove_generic_sumcheck_gpu( - &cuda_hal, - all_witins_gpu_type_gl64, - &mle_size_info, - &term_coefficients_gl64, - &mle_indices_per_term, - max_num_var, - max_degree, - basic_tr, - ) - .unwrap() - }; + // Convert types for GPU function Call + let basic_tr: &mut BasicTranscript = + unsafe { &mut *(transcript as *mut _ as *mut BasicTranscript) }; + let dag_coeffs: Vec = unsafe { std::mem::transmute(dag_coeffs) }; + + let all_witins_gpu_gl64: Vec<&MultilinearExtensionGpu> = + unsafe { std::mem::transmute(all_witins_gpu) }; + let all_witins_gpu_type_gl64 = all_witins_gpu_gl64.iter().map(|mle| &mle.mle).collect_vec(); + let (proof_gpu, evals_gpu, challenges_gpu) = cuda_hal + .sumcheck + .prove_generic_sumcheck_gpu( + &cuda_hal, + all_witins_gpu_type_gl64, + &mle_size_info, + &monomial_coefficients, + &mle_indices_per_term, + max_num_var, + *max_degree, + dag, + *max_dag_depth, + &dag_coeffs, + *stack_top, + basic_tr, + ) + .unwrap(); let evals_gpu = evals_gpu.into_iter().flatten().collect_vec(); let row_challenges = challenges_gpu.iter().map(|c| c.elements).collect_vec(); @@ -436,6 +413,10 @@ pub(crate) fn prove_rotation_gpu Date: Wed, 12 Nov 2025 19:27:18 +0800 Subject: [PATCH 09/13] set gkr-backend dep --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d319c82f2..0309f5133 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1904,7 +1904,7 @@ dependencies = [ [[package]] name = "ff_ext" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "once_cell", "p3", @@ -2716,7 +2716,7 @@ dependencies = [ [[package]] name = "mpcs" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "bincode", "clap", @@ -2740,7 +2740,7 @@ dependencies = [ [[package]] name = "multilinear_extensions" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "either", "ff_ext", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "p3" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "p3-air", "p3-baby-bear", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "poseidon" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "ff_ext", "p3", @@ -4482,7 +4482,7 @@ dependencies = [ [[package]] name = "sp1-curves" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "cfg-if", "dashu", @@ -4604,7 +4604,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sumcheck" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "either", "ff_ext", @@ -4622,7 +4622,7 @@ dependencies = [ [[package]] name = "sumcheck_macro" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "itertools 0.13.0", "p3", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "transcript" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "ff_ext", "itertools 0.13.0", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "whir" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "bincode", "clap", @@ -5576,7 +5576,7 @@ dependencies = [ [[package]] name = "witness" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.13#89aa6add9f4d16cd2f10ec81f7c11d4507400c9b" +source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" dependencies = [ "ff_ext", "multilinear_extensions", diff --git a/Cargo.toml b/Cargo.toml index a0b824a62..4c56c41bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,16 +23,16 @@ repository = "https://github.com/scroll-tech/ceno" version = "0.1.0" [workspace.dependencies] -ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.13" } -mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.13" } -multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", tag = "v1.0.0-alpha.13" } -p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", tag = "v1.0.0-alpha.13" } -poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", tag = "v1.0.0-alpha.13" } -sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", tag = "v1.0.0-alpha.13" } -sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", tag = "v1.0.0-alpha.13" } -transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", tag = "v1.0.0-alpha.13" } -whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", tag = "v1.0.0-alpha.13" } -witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", tag = "v1.0.0-alpha.13" } +ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", branch = "feat/arithmetics" } +mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", branch = "feat/arithmetics" } +multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", branch = "feat/arithmetics" } +p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", branch = "feat/arithmetics" } +poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", branch = "feat/arithmetics" } +sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", branch = "feat/arithmetics" } +sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", branch = "feat/arithmetics" } +transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", branch = "feat/arithmetics" } +whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", branch = "feat/arithmetics" } +witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", branch = "feat/arithmetics" } alloy-primitives = "1.3" anyhow = { version = "1.0", default-features = false } From 62296b780547c091ffad35f92ddeb1220191e3a8 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Thu, 13 Nov 2025 21:54:26 +0800 Subject: [PATCH 10/13] clippy fix --- gkr_iop/src/gkr/layer.rs | 4 ++- gkr_iop/src/gkr/layer/gpu/mod.rs | 4 +-- gkr_iop/src/gkr/layer/zerocheck_layer.rs | 43 +++++++----------------- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/gkr_iop/src/gkr/layer.rs b/gkr_iop/src/gkr/layer.rs index 73a7f561d..9f23a40ba 100644 --- a/gkr_iop/src/gkr/layer.rs +++ b/gkr_iop/src/gkr/layer.rs @@ -49,6 +49,8 @@ pub enum LayerType { Linear, } +pub type DagInfo = (Vec, Vec>, u32, usize, usize); + #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(bound( serialize = "E::BaseField: Serialize", @@ -106,7 +108,7 @@ pub struct Layer { // flatten computation dag // (dag, coeffs, final_out_index, max_dag_depth, max_degree) - pub main_sumcheck_expression_dag: Option<(Vec, Vec>, u32, usize, usize)>, + pub main_sumcheck_expression_dag: Option>, // rotation sumcheck expression, only optionally valid for zerocheck // store in 2 forms: expression & monomial diff --git a/gkr_iop/src/gkr/layer/gpu/mod.rs b/gkr_iop/src/gkr/layer/gpu/mod.rs index f660ac95b..ee0eb05c4 100644 --- a/gkr_iop/src/gkr/layer/gpu/mod.rs +++ b/gkr_iop/src/gkr/layer/gpu/mod.rs @@ -236,7 +236,7 @@ impl> ZerocheckLayerProver // process dag // (dag, coeffs, final_out_index, max_dag_depth, max_degree) - let (dag, dag_coeffs, stack_top, max_dag_depth, max_degree) = + let (dag, dag_coeffs, final_out_index, max_dag_depth, max_degree) = layer.main_sumcheck_expression_dag.as_ref().unwrap(); let pub_io_eval_scalar = pub_io_evals.iter().map(|v| Either::Right(*v)).collect_vec(); @@ -290,7 +290,7 @@ impl> ZerocheckLayerProver dag, *max_dag_depth, &dag_coeffs, - *stack_top, + *final_out_index, basic_tr, ) .unwrap(); diff --git a/gkr_iop/src/gkr/layer/zerocheck_layer.rs b/gkr_iop/src/gkr/layer/zerocheck_layer.rs index 4986de7f6..9703e9c8e 100644 --- a/gkr_iop/src/gkr/layer/zerocheck_layer.rs +++ b/gkr_iop/src/gkr/layer/zerocheck_layer.rs @@ -6,7 +6,7 @@ use multilinear_extensions::{ mle::{IntoMLE, Point}, monomialize_expr_to_wit_terms, utils::{ - build_factored_dag_commutative, eval_by_expr, eval_by_expr_with_instance, + build_factored_dag_commutative, dag_stats, eval_by_expr, eval_by_expr_with_instance, expr_convert_to_witins, }, virtual_poly::VPAuxInfo, @@ -176,17 +176,15 @@ impl ZerocheckLayer for Layer { .map(|expr| expr.get_monomial_terms()); { - self.main_sumcheck_expression_monomial_terms - .as_ref() - .map(|terms| { - let num_mul: usize = terms.iter().map(|term| term.product.len()).sum(); - let num_add = terms.iter().len() - 1; - - tracing::debug!( - "layer name {} monomial num_add: {num_add} num_mul: {num_mul}", - self.name, - ); - }); + if let Some(terms) = self.main_sumcheck_expression_monomial_terms.as_ref() { + let num_mul: usize = terms.iter().map(|term| term.product.len()).sum(); + let num_add = terms.iter().len() - 1; + + tracing::debug!( + "layer name {} monomial num_add: {num_add} num_mul: {num_mul}", + self.name, + ); + } } self.main_sumcheck_expression_dag = { @@ -195,33 +193,16 @@ impl ZerocheckLayer for Layer { .map(|terms| { // selector are structural witin, which is used to be the largest id. let (dag, coeffs, Some(final_out_index), max_dag_depth) = build_factored_dag_commutative(terms, false) else { panic!() }; - let stack_top = final_out_index + 1; let max_degree = zero_expr_degree; - let mut num_add = 0; - let mut num_mul = 0; - - for node in &dag { - match node.op { - 0 => (), // skip wit index - 1 => (), // skip scalar index - 2 => { - num_add += 1; - } - 3 => { - num_mul += 1; - } - op => panic!("unknown op {op}"), - } - } - + let (num_add, num_mul) = dag_stats(&dag); tracing::debug!( "layer name {} dag got num_add {num_add} num_mul {num_mul} max_degree {max_degree} \ max_dag_depth {max_dag_depth} num_scalar {} final_out_index {final_out_index}", self.name, coeffs.len(), ); - (dag, coeffs, stack_top, max_dag_depth as usize, zero_expr_degree) + (dag, coeffs, final_out_index, max_dag_depth as usize, zero_expr_degree) }) }; From 0deb1955c9dc4e1c40235aae20bddb868d347deb Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Thu, 13 Nov 2025 22:27:40 +0800 Subject: [PATCH 11/13] bump dependency --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0309f5133..4a202ce51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1904,7 +1904,7 @@ dependencies = [ [[package]] name = "ff_ext" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "once_cell", "p3", @@ -2716,7 +2716,7 @@ dependencies = [ [[package]] name = "mpcs" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "bincode", "clap", @@ -2740,7 +2740,7 @@ dependencies = [ [[package]] name = "multilinear_extensions" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "either", "ff_ext", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "p3" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "p3-air", "p3-baby-bear", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "poseidon" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "ff_ext", "p3", @@ -4482,7 +4482,7 @@ dependencies = [ [[package]] name = "sp1-curves" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "cfg-if", "dashu", @@ -4604,7 +4604,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sumcheck" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "either", "ff_ext", @@ -4622,7 +4622,7 @@ dependencies = [ [[package]] name = "sumcheck_macro" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "itertools 0.13.0", "p3", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "transcript" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "ff_ext", "itertools 0.13.0", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "whir" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "bincode", "clap", @@ -5576,7 +5576,7 @@ dependencies = [ [[package]] name = "witness" version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?branch=feat%2Farithmetics#e5f7c87175efd581cf38a86da38b38978b278b2c" +source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.14#08462f562a091792262ddb63eb5b774f9896be77" dependencies = [ "ff_ext", "multilinear_extensions", diff --git a/Cargo.toml b/Cargo.toml index 4c56c41bd..8a573fc94 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,16 +23,16 @@ repository = "https://github.com/scroll-tech/ceno" version = "0.1.0" [workspace.dependencies] -ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", branch = "feat/arithmetics" } -mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", branch = "feat/arithmetics" } -multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", branch = "feat/arithmetics" } -p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", branch = "feat/arithmetics" } -poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", branch = "feat/arithmetics" } -sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", branch = "feat/arithmetics" } -sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", branch = "feat/arithmetics" } -transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", branch = "feat/arithmetics" } -whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", branch = "feat/arithmetics" } -witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", branch = "feat/arithmetics" } +ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.14" } +mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.14" } +multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", tag = "v1.0.0-alpha.14" } +p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", tag = "v1.0.0-alpha.14" } +poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", tag = "v1.0.0-alpha.14" } +sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", tag = "v1.0.0-alpha.14" } +sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", tag = "v1.0.0-alpha.14" } +transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", tag = "v1.0.0-alpha.14" } +whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", tag = "v1.0.0-alpha.14" } +witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", tag = "v1.0.0-alpha.14" } alloy-primitives = "1.3" anyhow = { version = "1.0", default-features = false } @@ -97,17 +97,17 @@ opt-level = 3 [profile.release] lto = "thin" -# [patch."ssh://git@github.com/scroll-tech/ceno-gpu.git"] -# ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features=["bb31"] } - -# [patch."https://github.com/scroll-tech/gkr-backend"] -# ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" } -# mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" } -# multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" } -# p3 = { path = "../gkr-backend/crates/p3", package = "p3" } -# poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" } -# sp1-curves = { path = "../gkr-backend/crates/curves", package = "sp1-curves" } -# sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" } -# transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" } -# whir = { path = "../gkr-backend/crates/whir", package = "whir" } -# witness = { path = "../gkr-backend/crates/witness", package = "witness" } +#[patch."ssh://git@github.com/scroll-tech/ceno-gpu.git"] +#ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features = ["bb31"] } +# +#[patch."https://github.com/scroll-tech/gkr-backend"] +#ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" } +#mpcs = { path = "../gkr-backend/crates/mpcs", package = "mpcs" } +#multilinear_extensions = { path = "../gkr-backend/crates/multilinear_extensions", package = "multilinear_extensions" } +#p3 = { path = "../gkr-backend/crates/p3", package = "p3" } +#poseidon = { path = "../gkr-backend/crates/poseidon", package = "poseidon" } +#sp1-curves = { path = "../gkr-backend/crates/curves", package = "sp1-curves" } +#sumcheck = { path = "../gkr-backend/crates/sumcheck", package = "sumcheck" } +#transcript = { path = "../gkr-backend/crates/transcript", package = "transcript" } +#whir = { path = "../gkr-backend/crates/whir", package = "whir" } +#witness = { path = "../gkr-backend/crates/witness", package = "witness" } From d3849d26d5b5319196cab253e68e9d45bbc0ee69 Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Tue, 16 Dec 2025 20:44:28 +0800 Subject: [PATCH 12/13] update dep --- Cargo.lock | 386 ++++++++++++++++++------------------------- Cargo.toml | 2 +- ceno_zkvm/src/e2e.rs | 2 +- 3 files changed, 159 insertions(+), 231 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea1f6e9f1..fb918d43e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -957,10 +957,10 @@ dependencies = [ "ceno_zkvm", "clap", "console", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "get_dir", "gkr_iop", - "mpcs 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "mpcs", "openvm-circuit", "openvm-continuations", "openvm-cuda-backend", @@ -1073,10 +1073,10 @@ dependencies = [ "ceno_rt", "ceno_syscall", "elf", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", "k256 0.13.4 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "multilinear_extensions", "num", "num-derive", "num-traits", @@ -1126,11 +1126,11 @@ dependencies = [ "ceno_host", "ceno_zkvm", "clap", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "gkr_iop", "itertools 0.13.0", - "mpcs 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "mpcs", + "multilinear_extensions", "openvm", "openvm-circuit", "openvm-continuations", @@ -1144,18 +1144,18 @@ dependencies = [ "openvm-sdk", "openvm-stark-backend", "openvm-stark-sdk", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "parse-size", "rand 0.8.5", "serde", "serde_json", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck", "tracing", "tracing-forest", "tracing-subscriber", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "whir 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "transcript", + "whir", + "witness", ] [[package]] @@ -1197,20 +1197,20 @@ dependencies = [ "cudarc", "derive", "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "generic-array 1.2.0", "generic_static", "gkr_iop", "glob", "itertools 0.13.0", "metrics", - "mpcs 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "mpcs", + "multilinear_extensions", "ndarray", "num", "num-bigint 0.4.6", "once_cell", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "parse-size", "pprof2", "prettytable-rs", @@ -1223,7 +1223,7 @@ dependencies = [ "sp1-curves", "strum", "strum_macros", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck", "tempfile", "tikv-jemalloc-ctl", "tikv-jemallocator", @@ -1231,10 +1231,10 @@ dependencies = [ "tracing", "tracing-forest", "tracing-subscriber", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "transcript", "typenum", - "whir 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "whir", + "witness", ] [[package]] @@ -1581,24 +1581,47 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" +[[package]] +name = "cuda-config" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee74643f7430213a1a78320f88649de309b20b80818325575e393f848f79f5d" +dependencies = [ + "glob", +] + +[[package]] +name = "cuda-runtime-sys" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d070b301187fee3c611e75a425cf12247b7c75c09729dbdef95cb9cb64e8c39" +dependencies = [ + "cuda-config", +] + [[package]] name = "cuda_hal" version = "0.1.0" -source = "git+https://github.com/scroll-tech/ceno-gpu-mock.git?branch=main#802928096212ecb1d7347922bc13526ea63e1b01" dependencies = [ "anyhow", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", + "cuda-runtime-sys", + "cudarc", + "downcast-rs", + "ff_ext", "itertools 0.13.0", - "mpcs 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", + "mpcs", + "multilinear_extensions", + "p3", "rand 0.8.5", "rayon", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "thiserror 2.0.12", + "sha2", + "sppark", + "sppark_plug", + "sumcheck", + "thiserror 1.0.69", "tracing", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", + "transcript", + "witness", ] [[package]] @@ -2230,24 +2253,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ff_ext" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "once_cell", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rand_core 0.6.4", - "serde", -] - [[package]] name = "ff_ext" version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ "once_cell", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "rand_core 0.6.4", "serde", ] @@ -2414,18 +2426,18 @@ dependencies = [ "cuda_hal", "cudarc", "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", - "mpcs 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "mpcs", + "multilinear_extensions", "once_cell", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "rand 0.8.5", "rayon", "serde", "strum", "strum_macros", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck", "thiserror 2.0.12", "thread_local", "tikv-jemalloc-ctl", @@ -2433,8 +2445,8 @@ dependencies = [ "tracing", "tracing-forest", "tracing-subscriber", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "transcript", + "witness", ] [[package]] @@ -2676,6 +2688,15 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.1", +] + [[package]] name = "iana-time-zone" version = "0.1.64" @@ -3107,6 +3128,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -3245,30 +3272,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "mpcs" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "bincode 1.3.3", - "clap", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "itertools 0.13.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "num-integer", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rayon", - "serde", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "tracing", - "tracing-subscriber", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "whir 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", -] - [[package]] name = "mpcs" version = "0.1.0" @@ -3276,36 +3279,21 @@ source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18 dependencies = [ "bincode 1.3.3", "clap", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "multilinear_extensions", "num-integer", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "rand 0.8.5", "rand_chacha 0.3.1", "rayon", "serde", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck", "tracing", "tracing-subscriber", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "whir 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", -] - -[[package]] -name = "multilinear_extensions" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rand 0.8.5", - "rayon", - "serde", - "tracing", + "transcript", + "whir", + "witness", ] [[package]] @@ -3314,9 +3302,9 @@ version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "rand 0.8.5", "rayon", "serde", @@ -4603,31 +4591,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "p3" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "p3-air", - "p3-baby-bear", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-goldilocks", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-merkle-tree", - "p3-monty-31", - "p3-poseidon", - "p3-poseidon2", - "p3-poseidon2-air", - "p3-symmetric", - "p3-util", -] - [[package]] name = "p3" version = "0.1.0" @@ -5196,23 +5159,13 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "poseidon" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "serde", -] - [[package]] name = "poseidon" version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", + "p3", "serde", ] @@ -5867,6 +5820,19 @@ dependencies = [ "semver 1.0.26", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.0.7" @@ -5876,7 +5842,7 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -6236,11 +6202,11 @@ dependencies = [ "cfg-if", "dashu", "elliptic-curve", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "generic-array 1.2.0", "itertools 0.13.0", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "multilinear_extensions", "num", "p256", "p3-field", @@ -6266,6 +6232,25 @@ dependencies = [ "der", ] +[[package]] +name = "sppark" +version = "0.1.11" +dependencies = [ + "cc", + "which", +] + +[[package]] +name = "sppark_plug" +version = "0.1.0" +dependencies = [ + "cc", + "ff_ext", + "itertools 0.13.0", + "p3", + "sppark", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -6353,53 +6338,22 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "sumcheck" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "itertools 0.13.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rayon", - "serde", - "sumcheck_macro 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "thiserror 1.0.69", - "tracing", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", -] - [[package]] name = "sumcheck" version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ "either", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "multilinear_extensions", + "p3", "rayon", "serde", - "sumcheck_macro 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck_macro", "thiserror 1.0.69", "tracing", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", -] - -[[package]] -name = "sumcheck_macro" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "proc-macro2", - "quote", - "rand 0.8.5", - "syn 2.0.101", + "transcript", ] [[package]] @@ -6408,7 +6362,7 @@ version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", "proc-macro2", "quote", "rand 0.8.5", @@ -6486,7 +6440,7 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -6824,26 +6778,15 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "transcript" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "poseidon 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", -] - [[package]] name = "transcript" version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.13.0", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "poseidon 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "p3", + "poseidon", ] [[package]] @@ -7130,26 +7073,15 @@ dependencies = [ ] [[package]] -name = "whir" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ - "bincode 1.3.3", - "clap", - "derive_more 1.0.0", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "itertools 0.14.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rayon", - "serde", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "tracing", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "transpose", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", + "either", + "home", + "once_cell", + "rustix 0.38.44", ] [[package]] @@ -7160,19 +7092,19 @@ dependencies = [ "bincode 1.3.3", "clap", "derive_more 1.0.0", - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", "itertools 0.14.0", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "multilinear_extensions", + "p3", "rand 0.8.5", "rand_chacha 0.3.1", "rayon", "serde", - "sumcheck 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "sumcheck", "tracing", - "transcript 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "transcript", "transpose", - "witness 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "witness", ] [[package]] @@ -7283,6 +7215,15 @@ dependencies = [ "windows-targets 0.53.4", ] +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -7439,27 +7380,14 @@ dependencies = [ "bitflags", ] -[[package]] -name = "witness" -version = "0.1.0" -source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15#9be620b18900138d0b89569759fc2b3b9451b49e" -dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.15)", - "rand 0.8.5", - "rayon", - "tracing", -] - [[package]] name = "witness" version = "0.1.0" source = "git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18#f53336217179d70df37852fc850b786d4bc82f15" dependencies = [ - "ff_ext 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "multilinear_extensions 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", - "p3 0.1.0 (git+https://github.com/scroll-tech/gkr-backend.git?tag=v1.0.0-alpha.18)", + "ff_ext", + "multilinear_extensions", + "p3", "rand 0.8.5", "rayon", "tracing", diff --git a/Cargo.toml b/Cargo.toml index 3403b941a..f82b880cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -127,7 +127,7 @@ lto = "thin" #ceno_syscall = { path = "../ceno-patch/syscall", package = "ceno_syscall" } # [patch."https://github.com/scroll-tech/ceno-gpu-mock.git"] -# ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features=["bb31"] } +# ceno_gpu = { path = "../ceno-gpu/cuda_hal", package = "cuda_hal", default-features = false, features = ["bb31"] } #[patch."https://github.com/scroll-tech/gkr-backend"] #ff_ext = { path = "../gkr-backend/crates/ff_ext", package = "ff_ext" } diff --git a/ceno_zkvm/src/e2e.rs b/ceno_zkvm/src/e2e.rs index 047e238a8..1570eece5 100644 --- a/ceno_zkvm/src/e2e.rs +++ b/ceno_zkvm/src/e2e.rs @@ -1654,7 +1654,7 @@ fn create_proofs_streaming< { let mut proofs = Vec::new(); let mut proof_err = None; - let mut rx = rx; + let rx = rx; while let Ok((zkvm_witness, shard_ctx, pi)) = rx.recv() { if is_mock_proving { MockProver::assert_satisfied_full( From 7c38e56d2c4d962054a74507524b03c8bf36c4ba Mon Sep 17 00:00:00 2001 From: "sm.wu" Date: Tue, 16 Dec 2025 21:08:37 +0800 Subject: [PATCH 13/13] update ceno-gpu-mock --- Cargo.lock | 112 ++--------------------------------------------------- 1 file changed, 3 insertions(+), 109 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fb918d43e..48201fe9a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1581,48 +1581,10 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" -[[package]] -name = "cuda-config" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee74643f7430213a1a78320f88649de309b20b80818325575e393f848f79f5d" -dependencies = [ - "glob", -] - -[[package]] -name = "cuda-runtime-sys" -version = "0.3.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d070b301187fee3c611e75a425cf12247b7c75c09729dbdef95cb9cb64e8c39" -dependencies = [ - "cuda-config", -] - [[package]] name = "cuda_hal" version = "0.1.0" -dependencies = [ - "anyhow", - "cuda-runtime-sys", - "cudarc", - "downcast-rs", - "ff_ext", - "itertools 0.13.0", - "mpcs", - "multilinear_extensions", - "p3", - "rand 0.8.5", - "rayon", - "sha2", - "sppark", - "sppark_plug", - "sumcheck", - "thiserror 1.0.69", - "tracing", - "transcript", - "witness", -] +source = "git+https://github.com/scroll-tech/ceno-gpu-mock.git?branch=main#fe8f7923b7d3a3823c27949fab0aab8e31011aa9" [[package]] name = "cudarc" @@ -2688,15 +2650,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.1", -] - [[package]] name = "iana-time-zone" version = "0.1.64" @@ -3128,12 +3081,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -5820,19 +5767,6 @@ dependencies = [ "semver 1.0.26", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.0.7" @@ -5842,7 +5776,7 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys 0.9.4", + "linux-raw-sys", "windows-sys 0.59.0", ] @@ -6232,25 +6166,6 @@ dependencies = [ "der", ] -[[package]] -name = "sppark" -version = "0.1.11" -dependencies = [ - "cc", - "which", -] - -[[package]] -name = "sppark_plug" -version = "0.1.0" -dependencies = [ - "cc", - "ff_ext", - "itertools 0.13.0", - "p3", - "sppark", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -6440,7 +6355,7 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix 1.0.7", + "rustix", "windows-sys 0.59.0", ] @@ -7072,18 +6987,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "whir" version = "0.1.0" @@ -7215,15 +7118,6 @@ dependencies = [ "windows-targets 0.53.4", ] -[[package]] -name = "windows-sys" -version = "0.61.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-targets" version = "0.52.6"