From c4466b2c9306f2e75a09f50b1bb5d0cf2b050c38 Mon Sep 17 00:00:00 2001 From: Zhiyong Fang Date: Sun, 14 Sep 2025 19:06:35 -0700 Subject: [PATCH 1/4] allow hint with warning --- expander_compiler/src/zkcuda/mpi_mem_share.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/expander_compiler/src/zkcuda/mpi_mem_share.rs b/expander_compiler/src/zkcuda/mpi_mem_share.rs index 5c79c7db..02f28fde 100644 --- a/expander_compiler/src/zkcuda/mpi_mem_share.rs +++ b/expander_compiler/src/zkcuda/mpi_mem_share.rs @@ -65,18 +65,16 @@ impl MPISharedMemory for ComputationGraph { impl MPISharedMemory for Kernel { fn bytes_size(&self) -> usize { - assert!( - self.hint_solver.is_none(), - "Hint solver is not supported in MPISharedMemory for Kernel" - ); + if !self.hint_solver.is_none() { + eprintln!("Warning: Shared Memory will ignore the hint solver in Kernel"); + } self.layered_circuit.bytes_size() + self.layered_circuit_input.bytes_size() } fn to_memory(&self, ptr: &mut *mut u8) { - assert!( - self.hint_solver.is_none(), - "Hint solver is not supported in MPISharedMemory for Kernel" - ); + if !self.hint_solver.is_none() { + eprintln!("Warning: Shared Memory will ignore the hint solver in Kernel"); + } self.layered_circuit.to_memory(ptr); self.layered_circuit_input.to_memory(ptr); } From 6c3c67910971299c420ef3c77aec0362cb946ad0 Mon Sep 17 00:00:00 2001 From: Zhiyong Fang Date: Sun, 14 Sep 2025 19:10:06 -0700 Subject: [PATCH 2/4] format --- expander_compiler/src/zkcuda/mpi_mem_share.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/expander_compiler/src/zkcuda/mpi_mem_share.rs b/expander_compiler/src/zkcuda/mpi_mem_share.rs index 02f28fde..12c3d6a0 100644 --- a/expander_compiler/src/zkcuda/mpi_mem_share.rs +++ b/expander_compiler/src/zkcuda/mpi_mem_share.rs @@ -65,14 +65,14 @@ impl MPISharedMemory for ComputationGraph { impl MPISharedMemory for Kernel { fn bytes_size(&self) -> usize { - if !self.hint_solver.is_none() { + if self.hint_solver.is_some() { eprintln!("Warning: Shared Memory will ignore the hint solver in Kernel"); } self.layered_circuit.bytes_size() + self.layered_circuit_input.bytes_size() } fn to_memory(&self, ptr: &mut *mut u8) { - if !self.hint_solver.is_none() { + if self.hint_solver.is_some() { eprintln!("Warning: Shared Memory will ignore the hint solver in Kernel"); } self.layered_circuit.to_memory(ptr); From b33251f72c78f7a76f131001a43ed5ec99b7170c Mon Sep 17 00:00:00 2001 From: hczphn Date: Sun, 14 Sep 2025 19:26:12 -0700 Subject: [PATCH 3/4] add a hint test --- circuit-std-rs/tests/logup.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/circuit-std-rs/tests/logup.rs b/circuit-std-rs/tests/logup.rs index 0b983f12..1c2181ba 100644 --- a/circuit-std-rs/tests/logup.rs +++ b/circuit-std-rs/tests/logup.rs @@ -7,8 +7,9 @@ use circuit_std_rs::{ use expander_compiler::{ field::{BN254Fr, Goldilocks}, frontend::*, - zkcuda::{context::*, kernel::*, proving_system::*, shape::Reshape}, + zkcuda::{context::*, kernel::*, proving_system::{expander::config::ZKCudaBN254Hyrax, *}, shape::Reshape}, }; +use serdes::ExpSerde; #[test] fn logup_test() { @@ -196,3 +197,27 @@ fn rangeproof_zkcuda_test_fail() { ); assert!(P::verify(&verifier_setup, &computation_graph, &proof)); } + +#[test] +fn rangeproof_zkcuda_no_oversubscribe_test() { + let mut hint_registry = HintRegistry::::new(); + hint_registry.register("myhint.querycounthint", query_count_hint); + hint_registry.register("myhint.rangeproofhint", rangeproof_hint); + //compile and test + let kernel: KernelPrimitive = compile_rangeproof_test_kernel().unwrap(); + let mut ctx: Context = Context::new(hint_registry); + + let a = BN254Fr::from((1 << 9) as u32); + let a = ctx.copy_to_device(&a); + let a = a.reshape(&[1]); + call_kernel!(ctx, kernel, 1, a).unwrap(); + + let computation_graph = ctx.compile_computation_graph().unwrap(); + ctx.solve_witness().unwrap(); + let (prover_setup, _) = ExpanderNoOverSubscribe::::setup(&computation_graph); + let proof = ExpanderNoOverSubscribe::::prove(&prover_setup, &computation_graph, ctx.export_device_memories()); + let file = std::fs::File::create("proof.txt").unwrap(); + let writer = std::io::BufWriter::new(file); + proof.serialize_into(writer); + as ProvingSystem>::post_process(); +} From 353646a4bf38f97d1bbcb15bacbe3531441c6714 Mon Sep 17 00:00:00 2001 From: Zhiyong Fang Date: Sun, 14 Sep 2025 20:44:28 -0700 Subject: [PATCH 4/4] fix fmt issue --- circuit-std-rs/tests/logup.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/circuit-std-rs/tests/logup.rs b/circuit-std-rs/tests/logup.rs index 1c2181ba..e3460bd8 100644 --- a/circuit-std-rs/tests/logup.rs +++ b/circuit-std-rs/tests/logup.rs @@ -7,7 +7,12 @@ use circuit_std_rs::{ use expander_compiler::{ field::{BN254Fr, Goldilocks}, frontend::*, - zkcuda::{context::*, kernel::*, proving_system::{expander::config::ZKCudaBN254Hyrax, *}, shape::Reshape}, + zkcuda::{ + context::*, + kernel::*, + proving_system::{expander::config::ZKCudaBN254Hyrax, *}, + shape::Reshape, + }, }; use serdes::ExpSerde; @@ -215,9 +220,13 @@ fn rangeproof_zkcuda_no_oversubscribe_test() { let computation_graph = ctx.compile_computation_graph().unwrap(); ctx.solve_witness().unwrap(); let (prover_setup, _) = ExpanderNoOverSubscribe::::setup(&computation_graph); - let proof = ExpanderNoOverSubscribe::::prove(&prover_setup, &computation_graph, ctx.export_device_memories()); + let proof = ExpanderNoOverSubscribe::::prove( + &prover_setup, + &computation_graph, + ctx.export_device_memories(), + ); let file = std::fs::File::create("proof.txt").unwrap(); let writer = std::io::BufWriter::new(file); - proof.serialize_into(writer); - as ProvingSystem>::post_process(); + proof.serialize_into(writer).expect("serialize failed"); + as ProvingSystem>::post_process(); }