Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion crates/ere-hosts/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Binary for benchmarking different Ere compatible zkVMs

use std::path::PathBuf;
use std::{path::PathBuf, process::Command};

// use ere_pico::{ErePico, PICO_TARGET};

Expand All @@ -13,16 +13,19 @@ use zkvm_interface::{Compiler, ProverResourceType};

/// Main entry point for the host benchmarker
fn main() -> Result<(), Box<dyn std::error::Error>> {
run_cargo_patch_command("sp1")?;
let resource = ProverResourceType::Cpu;
let sp1_zkvm = new_sp1_zkvm(resource)?;
let action = Action::Execute;
run_benchmark_ere("sp1", sp1_zkvm, action)?;

run_cargo_patch_command("risc0")?;
let resource = ProverResourceType::Cpu;
let risc0_zkvm = new_risczero_zkvm(resource)?;
let action = Action::Execute;
run_benchmark_ere("risc0", risc0_zkvm, action)?;

// run_cargo_patch_command("openvm")?;
let resource = ProverResourceType::Cpu;
let openvm_zkvm = new_openvm_zkvm(resource)?;
let action = Action::Execute;
Expand Down Expand Up @@ -63,3 +66,28 @@ fn new_openvm_zkvm(
// let program = PICO_TARGET::compile(&PathBuf::from(guest_dir))?;
// Ok(ErePico::new(program, prover_resource))
// }

/// Patches the precompiles for a specific zkvm
fn run_cargo_patch_command(zkvm_name: &str) -> Result<(), Box<dyn std::error::Error>> {
println!("Running cargo {}...", zkvm_name);

let output = Command::new("cargo").arg(zkvm_name).output()?;

if !output.status.success() {
let stderr = String::from_utf8_lossy(&output.stderr);
let stdout = String::from_utf8_lossy(&output.stdout);

eprintln!(
"cargo {} failed with exit code: {:?}",
zkvm_name,
output.status.code()
);
eprintln!("stdout: {}", stdout);
eprintln!("stderr: {}", stderr);

return Err(format!("cargo {} command failed", zkvm_name).into());
}

println!("cargo {} completed successfully", zkvm_name);
Ok(())
}