Skip to content

Commit 5d7c20e

Browse files
committed
Revert "refactor sdk cycle counting (#222)"
This reverts commit 5f0509c.
1 parent ea1b973 commit 5d7c20e

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

crates/integration/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::axiom::AxiomProver;
22
use cargo_metadata::MetadataCommand;
33
use once_cell::sync::OnceCell;
4-
use openvm_sdk::{Sdk, StdIn};
4+
use openvm_sdk::StdIn;
55
use scroll_zkvm_prover::{
66
Prover,
77
setup::{read_app_config, read_app_exe},
@@ -367,8 +367,8 @@ pub fn tester_execute<T: ProverTester>(
367367
.map(|p| p.as_stark_proof().expect("must be stark proof")),
368368
)?;
369369

370-
let sdk = Sdk::new(app_config)?;
371-
let ret = scroll_zkvm_prover::utils::vm::execute_guest(&sdk, app_exe, &stdin)?;
370+
let ret =
371+
scroll_zkvm_prover::utils::vm::execute_guest(app_config.app_vm_config, &app_exe, &stdin)?;
372372
Ok(ret)
373373
}
374374

crates/prover/src/prover/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,10 @@ impl Prover {
173173
stdin: &StdIn,
174174
) -> Result<crate::utils::vm::ExecutionResult, Error> {
175175
let sdk = self.get_sdk()?;
176+
let config = sdk.app_config();
176177
let t = std::time::Instant::now();
177-
let exec_result = crate::utils::vm::execute_guest(sdk, self.app_exe.clone(), stdin)?;
178+
let exec_result =
179+
crate::utils::vm::execute_guest(config.app_vm_config.clone(), &self.app_exe, stdin)?;
178180
let execution_time_mills = t.elapsed().as_millis() as u64;
179181
let execution_time_s = execution_time_mills as f32 / 1000.0f32;
180182
let exec_speed = (exec_result.total_cycle as f32 / 1_000_000.0f32) / execution_time_s; // MHz

crates/prover/src/utils/vm.rs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
use openvm_sdk::{Sdk, StdIn, types::ExecutableFormat};
1+
use std::sync::Arc;
2+
3+
use openvm_circuit::{
4+
arch::{VmExecutor, instructions::exe::VmExe},
5+
system::{
6+
memory::merkle::public_values::extract_public_values, program::trace::VmCommittedExe,
7+
},
8+
};
9+
use openvm_sdk::{F, SC, StdIn, config::SdkVmConfig};
210

311
use crate::Error;
412

@@ -8,15 +16,28 @@ pub struct ExecutionResult {
816
pub public_values: Vec<u8>,
917
}
1018

19+
#[derive(Default)]
20+
pub struct DebugInput {
21+
pub mock_prove: bool,
22+
pub commited_exe: Option<Arc<VmCommittedExe<SC>>>,
23+
}
24+
1125
pub fn execute_guest(
12-
sdk: &Sdk,
13-
exe: impl Into<ExecutableFormat>,
26+
vm_config: SdkVmConfig,
27+
exe: &VmExe<F>,
1428
stdin: &StdIn,
1529
) -> Result<ExecutionResult, Error> {
16-
let (public_values, (_cost, total_cycle)) = sdk
17-
.execute_metered_cost(exe, stdin.clone())
30+
let executor = VmExecutor::new(vm_config.clone()).expect("invalid config");
31+
let instance = executor.instance(exe).expect("invalid exe");
32+
33+
let state = instance
34+
.execute(stdin.clone(), None)
1835
.map_err(|e| Error::GenProof(e.to_string()))?;
36+
let total_cycle = state.instret();
37+
let final_memory = state.memory;
1938

39+
let public_values: Vec<u8> =
40+
extract_public_values(vm_config.as_ref().num_public_values, &final_memory.memory);
2041
tracing::debug!(name: "public_values after guest execution", ?public_values);
2142
if public_values.iter().all(|x| *x == 0) {
2243
return Err(Error::GenProof("public_values are all 0s".to_string()));

0 commit comments

Comments
 (0)