From e8ad53881c1a574ad7c2cb5c2ee0b9db43aec149 Mon Sep 17 00:00:00 2001 From: Ratan Kaliani Date: Wed, 7 Aug 2024 00:27:48 -0700 Subject: [PATCH] fix --- .vscode/settings.json | 2 + book/writing-programs/cycle-tracking.md | 2 +- core/src/syscall/write.rs | 19 ++++--- examples/cycle-tracking/program/Cargo.toml | 8 +++ .../program/{src/main.rs => bin/normal.rs} | 4 +- examples/cycle-tracking/program/bin/report.rs | 25 +++++++++ .../{riscv32im-succinct-zkvm-elf => normal} | Bin examples/cycle-tracking/program/elf/report | Bin 0 -> 113964 bytes examples/cycle-tracking/script/build.rs | 18 ++++++- examples/cycle-tracking/script/src/main.rs | 48 +++++++++--------- 10 files changed, 86 insertions(+), 40 deletions(-) rename examples/cycle-tracking/program/{src/main.rs => bin/normal.rs} (87%) create mode 100644 examples/cycle-tracking/program/bin/report.rs rename examples/cycle-tracking/program/elf/{riscv32im-succinct-zkvm-elf => normal} (100%) create mode 100755 examples/cycle-tracking/program/elf/report diff --git a/.vscode/settings.json b/.vscode/settings.json index ad9ab59b7b..7e4fd0ca18 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,8 @@ // // Examples. // "examples/chess/program/Cargo.toml", // "examples/chess/script/Cargo.toml", + // "examples/cycle-tracking/program/Cargo.toml", + // "examples/cycle-tracking/script/Cargo.toml", // "examples/fibonacci/program/Cargo.toml", // "examples/fibonacci/script/Cargo.toml", // "examples/io/program/Cargo.toml", diff --git a/book/writing-programs/cycle-tracking.md b/book/writing-programs/cycle-tracking.md index c641f1e57e..176249b45e 100644 --- a/book/writing-programs/cycle-tracking.md +++ b/book/writing-programs/cycle-tracking.md @@ -7,7 +7,7 @@ When writing a program, it is useful to know how many RISC-V cycles a portion of To track the number of cycles spent in a portion of the program, you can either put `println!("cycle-tracker-start: block name")` + `println!("cycle-tracker-end: block name")` statements (block name must be same between start and end) around the portion of your program you want to profile or use the `#[sp1_derive::cycle_tracker]` macro on a function. An example is shown below: ```rust,noplayground -{{#include ../../examples/cycle-tracking/program/src/main.rs}} +{{#include ../../examples/cycle-tracking/program/bin/normal.rs}} ``` Note that to use the macro, you must add the `sp1-derive` crate to your dependencies for your program. diff --git a/core/src/syscall/write.rs b/core/src/syscall/write.rs index f910e5bd2d..9c42252b93 100644 --- a/core/src/syscall/write.rs +++ b/core/src/syscall/write.rs @@ -90,17 +90,16 @@ enum CycleTrackerCommand { /// Parse a cycle tracker command from a string. If the string does not match any known command, returns None. fn parse_cycle_tracker_command(s: &str) -> Option { - if let Some((command, fn_name)) = s.split_once(':') { - let trimmed_name = fn_name.trim().to_string(); - match command { - "cycle-tracker-start" => Some(CycleTrackerCommand::Start(trimmed_name)), - "cycle-tracker-end" => Some(CycleTrackerCommand::End(trimmed_name)), - "cycle-tracker-report-start" => Some(CycleTrackerCommand::ReportStart(trimmed_name)), - "cycle-tracker-report-end" => Some(CycleTrackerCommand::ReportEnd(trimmed_name)), - _ => None, - }; + let (command, fn_name) = s.split_once(':')?; + let trimmed_name = fn_name.trim().to_string(); + + match command { + "cycle-tracker-start" => Some(CycleTrackerCommand::Start(trimmed_name)), + "cycle-tracker-end" => Some(CycleTrackerCommand::End(trimmed_name)), + "cycle-tracker-report-start" => Some(CycleTrackerCommand::ReportStart(trimmed_name)), + "cycle-tracker-report-end" => Some(CycleTrackerCommand::ReportEnd(trimmed_name)), + _ => None, } - None } /// Handle a cycle tracker command. diff --git a/examples/cycle-tracking/program/Cargo.toml b/examples/cycle-tracking/program/Cargo.toml index fbe98f6940..e0e23de020 100644 --- a/examples/cycle-tracking/program/Cargo.toml +++ b/examples/cycle-tracking/program/Cargo.toml @@ -5,6 +5,14 @@ version = "1.1.0" edition = "2021" publish = false +[[bin]] +name = "normal" +path = "bin/normal.rs" + +[[bin]] +name = "report" +path = "bin/report.rs" + [dependencies] sp1-zkvm = { path = "../../../zkvm/entrypoint" } sp1-derive = { path = "../../../derive" } diff --git a/examples/cycle-tracking/program/src/main.rs b/examples/cycle-tracking/program/bin/normal.rs similarity index 87% rename from examples/cycle-tracking/program/src/main.rs rename to examples/cycle-tracking/program/bin/normal.rs index 9dbfcbab50..cfffe0efe7 100644 --- a/examples/cycle-tracking/program/src/main.rs +++ b/examples/cycle-tracking/program/bin/normal.rs @@ -15,13 +15,13 @@ pub fn main() { let mut nums = vec![1, 1]; // Setup a large vector with Fibonacci-esque numbers. - println!("cycle-tracker-report-start: setup"); + println!("cycle-tracker-start: setup"); for _ in 0..100 { let mut c = nums[nums.len() - 1] + nums[nums.len() - 2]; c %= 7919; nums.push(c); } - println!("cycle-tracker-report-end: setup"); + println!("cycle-tracker-end: setup"); println!("cycle-tracker-start: main-body"); for i in 0..2 { diff --git a/examples/cycle-tracking/program/bin/report.rs b/examples/cycle-tracking/program/bin/report.rs new file mode 100644 index 0000000000..e60ce2e2af --- /dev/null +++ b/examples/cycle-tracking/program/bin/report.rs @@ -0,0 +1,25 @@ +#![no_main] +sp1_zkvm::entrypoint!(main); + +#[sp1_derive::cycle_tracker] +pub fn expensive_function(x: usize) -> usize { + let mut y = 1; + for _ in 0..100 { + y *= x; + y %= 7919; + } + y +} + +pub fn main() { + let mut nums = vec![1, 1]; + + // Setup a large vector with Fibonacci-esque numbers. + println!("cycle-tracker-report-start: setup"); + for _ in 0..100 { + let mut c = nums[nums.len() - 1] + nums[nums.len() - 2]; + c %= 7919; + nums.push(c); + } + println!("cycle-tracker-report-end: setup"); +} diff --git a/examples/cycle-tracking/program/elf/riscv32im-succinct-zkvm-elf b/examples/cycle-tracking/program/elf/normal similarity index 100% rename from examples/cycle-tracking/program/elf/riscv32im-succinct-zkvm-elf rename to examples/cycle-tracking/program/elf/normal diff --git a/examples/cycle-tracking/program/elf/report b/examples/cycle-tracking/program/elf/report new file mode 100755 index 0000000000000000000000000000000000000000..297d138f883b3a1617a7a0e5116bd72acbe3647d GIT binary patch literal 113964 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