diff --git a/Cargo.lock b/Cargo.lock index 73da65a1..167d8b0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1478,7 +1478,7 @@ dependencies = [ "bitflags 2.9.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.13.0", "log", "prettyplease 0.2.32", "proc-macro2", @@ -3052,11 +3052,26 @@ name = "ere-hosts" version = "0.1.0" dependencies = [ "benchmark-runner", + "ere-openvm", "ere-risczero", "ere-sp1", "zkvm-interface", ] +[[package]] +name = "ere-openvm" +version = "0.1.0" +source = "git+https://github.com/eth-applied-research-group/ere#d106f8d65c103c27e23e3cd7ba6a0e8eb7364c78" +dependencies = [ + "openvm-build", + "openvm-circuit", + "openvm-sdk", + "openvm-stark-sdk", + "openvm-transpiler", + "thiserror 2.0.12", + "zkvm-interface", +] + [[package]] name = "ere-risczero" version = "0.1.0" @@ -6732,6 +6747,7 @@ dependencies = [ "p3-maybe-rayon 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c)", "p3-uni-stark 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c)", "p3-util 0.1.0 (git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c)", + "rayon", "rustc-hash 2.1.1", "serde", "thiserror 1.0.69", @@ -7368,6 +7384,9 @@ dependencies = [ name = "p3-maybe-rayon" version = "0.1.0" source = "git+https://github.com/Plonky3/Plonky3.git?rev=1ba4e5c#1ba4e5c40417f4f7aae86bcca56b6484b4b2490b" +dependencies = [ + "rayon", +] [[package]] name = "p3-maybe-rayon" @@ -8322,7 +8341,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.101", diff --git a/Cargo.toml b/Cargo.toml index da94180a..ccaa8de5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,6 +117,7 @@ zkvm-interface = { git = "https://github.com/eth-applied-research-group/ere", pa ere-sp1 = { git = "https://github.com/eth-applied-research-group/ere", package = "ere-sp1" } ere-risczero = { git = "https://github.com/eth-applied-research-group/ere", package = "ere-risczero" } ere-pico = { git = "https://github.com/eth-applied-research-group/ere", package = "ere-pico" } +ere-openvm = { git = "https://github.com/eth-applied-research-group/ere", package = "ere-openvm" } # branch is kw/zkevm-benchmark-workload-repo # NOTE: We are using a branch of a branch that has not yet been merged into master. diff --git a/crates/ere-hosts/Cargo.toml b/crates/ere-hosts/Cargo.toml index 4b2850d9..ddad8515 100644 --- a/crates/ere-hosts/Cargo.toml +++ b/crates/ere-hosts/Cargo.toml @@ -11,6 +11,7 @@ ere-sp1.workspace = true ere-risczero.workspace = true # ere-pico.workspace = true zkvm-interface.workspace = true +ere-openvm.workspace = true [lints] workspace = true diff --git a/crates/ere-hosts/src/main.rs b/crates/ere-hosts/src/main.rs index 547b61fe..2e63704d 100644 --- a/crates/ere-hosts/src/main.rs +++ b/crates/ere-hosts/src/main.rs @@ -5,6 +5,7 @@ use std::path::PathBuf; // use ere_pico::{ErePico, PICO_TARGET}; use benchmark_runner::{Action, run_benchmark_ere}; +use ere_openvm::{EreOpenVM, OPENVM_TARGET}; use ere_risczero::{EreRisc0, RV32_IM_RISCZERO_ZKVM_ELF}; use ere_sp1::{EreSP1, RV32_IM_SUCCINCT_ZKVM_ELF}; @@ -22,13 +23,17 @@ fn main() -> Result<(), Box> { let action = Action::Execute; run_benchmark_ere("risc0", risc0_zkvm, action)?; + let resource = ProverResourceType::Cpu; + let openvm_zkvm = new_openvm_zkvm(resource)?; + let action = Action::Execute; + run_benchmark_ere("openvm", openvm_zkvm, action)?; + // TODO: Symbol conflict with Risc0, See #42 // let resource = ProverResourceType::Cpu; // let pico_zkvm = new_pico_zkvm(resource)?; // let action = Action::Execute; // run_benchmark_ere("pico", pico_zkvm, action)?; - // TODO: Add more backends Ok(()) } @@ -44,6 +49,13 @@ fn new_risczero_zkvm( let program = RV32_IM_RISCZERO_ZKVM_ELF::compile(&PathBuf::from(guest_dir))?; Ok(EreRisc0::new(program, prover_resource)) } +fn new_openvm_zkvm( + prover_resource: ProverResourceType, +) -> Result> { + let guest_dir = concat!(env!("CARGO_WORKSPACE_DIR"), "ere-guests/openvm"); + let program = OPENVM_TARGET::compile(&PathBuf::from(guest_dir))?; + Ok(EreOpenVM::new(program, prover_resource)) +} // fn new_pico_zkvm( // prover_resource: ProverResourceType, // ) -> Result> {