From 9d6723bf03cf3320505016d02e027fc433470901 Mon Sep 17 00:00:00 2001 From: Manish Kumar Date: Tue, 12 Mar 2024 12:25:00 +0530 Subject: [PATCH] added tracer for logging --- hash/sp1/bench/run.sh | 2 +- hash/sp1/bench/script/src/main.rs | 5 ++++- .../sha256/elf/riscv32im-succinct-zkvm-elf | Bin 113704 -> 113712 bytes 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/hash/sp1/bench/run.sh b/hash/sp1/bench/run.sh index d39a51f..2cde35d 100755 --- a/hash/sp1/bench/run.sh +++ b/hash/sp1/bench/run.sh @@ -12,4 +12,4 @@ echo "HASH = $ZKBENCH_HASH_TYPE" echo "Input Size (Bytes) = $ZKBENCH_INPUT_SIZE_BYTES" # Run the benchmarks -./target/release/bench-script $ZKBENCH_HASH_TYPE $ZKBENCH_INPUT_SIZE_BYTES \ No newline at end of file +RUST_LOG=info ./target/release/bench-script $ZKBENCH_HASH_TYPE $ZKBENCH_INPUT_SIZE_BYTES \ No newline at end of file diff --git a/hash/sp1/bench/script/src/main.rs b/hash/sp1/bench/script/src/main.rs index b75a413..3c4ded1 100644 --- a/hash/sp1/bench/script/src/main.rs +++ b/hash/sp1/bench/script/src/main.rs @@ -13,7 +13,7 @@ use crate::benches::{ blake3::blake3_benchmark, poseidon2::poseidon2_benchmark }; - +use sp1_core::utils; use std::process; fn main() { @@ -28,6 +28,9 @@ fn main() { let bench_type = &args[1]; let size = args[2].parse::().unwrap(); + // Setup a tracer for logging. + utils::setup_logger(); + match bench_type.as_str() { "sha256" => { diff --git a/hash/sp1/bench/sha256/elf/riscv32im-succinct-zkvm-elf b/hash/sp1/bench/sha256/elf/riscv32im-succinct-zkvm-elf index d5f80e9ab85b37b6d884dabd77169d6b5d96de86..3e19cb15ad5e1944444886d8de7e39fb22becb0a 100755 GIT binary patch delta 23965 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 b9HCpA$OYU|EAY=UKiP(Zf?BYnm&^YFwuMUD delta 24448 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