Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e4ebc25
exp preflight
hero78119 Jul 13, 2026
437694d
Update Ceno preflight AOT lock
hero78119 Jul 13, 2026
22d27cb
update dep
hero78119 Jul 14, 2026
73b93fe
update dep
hero78119 Jul 14, 2026
ba9dfbd
update dep
hero78119 Jul 14, 2026
4ef3a94
modify default max cell value
hero78119 Jul 14, 2026
64d11be
update dep
hero78119 Jul 14, 2026
9b599aa
refresh max cell
hero78119 Jul 16, 2026
49f1ea2
update ceno dep
hero78119 Jul 16, 2026
e8c0d78
remove unused env
hero78119 Jul 16, 2026
6c26c2e
exp fused sumcheck kernel
hero78119 Jul 16, 2026
b1ae114
upgrade ceno gpu dep
hero78119 Jul 17, 2026
dadea1c
health check for gpu temp offline
hero78119 Jul 17, 2026
1f2f909
update dep
hero78119 Jul 17, 2026
e2a7c87
update cell per shard
hero78119 Jul 17, 2026
44372ec
add missing parallel feature and aot
hero78119 Jul 18, 2026
99297e5
add cc for preflight
hero78119 Jul 18, 2026
fa72aca
align ci paramter for ethproofs job
hero78119 Jul 18, 2026
b17f94a
move aot compilation to setup time
hero78119 Jul 18, 2026
0db03c3
fix aot sdk prep mutability warning
hero78119 Jul 18, 2026
457a8ff
fix clippy warning
hero78119 Jul 19, 2026
334a5fb
update ceno and verify feat/bug_fix
hero78119 Jul 20, 2026
3650d73
fix: move aot outside of reth-block
hero78119 Jul 20, 2026
bba73e4
add s3 block input download path
hero78119 Jul 20, 2026
52bae84
sync up master and main branch
hero78119 Jul 21, 2026
cfb3623
s3 in https
hero78119 Jul 21, 2026
f79c6bb
s3 in https
hero78119 Jul 21, 2026
0767832
Merge branch 'feat/preflight' of github.com:scroll-tech/ceno-reth-ben…
hero78119 Jul 21, 2026
a70dd56
update ceno branch to master
hero78119 Jul 21, 2026
01a4d0b
resolve oom
hero78119 Jul 21, 2026
a0aa2bd
update ceno batched main shard costing
hero78119 Jul 21, 2026
a33faa6
chore: default adaptive shard cap to 5B
hero78119 Jul 21, 2026
b61bed1
Revert "chore: default adaptive shard cap to 5B"
hero78119 Jul 21, 2026
ba89e94
chore: default adaptive shard cap to 4.5B
hero78119 Jul 21, 2026
2e2fc92
Revert "chore: default adaptive shard cap to 4.5B"
hero78119 Jul 21, 2026
d6399b4
bench: add execute-mode cycle histograms
hero78119 Jul 22, 2026
03e3044
update ceno for opt cycle trial
hero78119 Jul 22, 2026
b71ac93
ci: use remote ceno dependencies
hero78119 Jul 22, 2026
cfd6303
executor: avoid rehashing unchanged storage tries
hero78119 Jul 22, 2026
d4fd096
perf: upgrade revm and preallocate execution state
hero78119 Jul 23, 2026
6d1af5b
fix: use remote ceno guest dependencies in CI
hero78119 Jul 23, 2026
9ee7f9d
fix: include executor trim configuration module
hero78119 Jul 23, 2026
eec7494
ci: pin CUDA architecture for GPU runner
hero78119 Jul 23, 2026
396c398
perf: stream authenticated MPT state chunks
hero78119 Jul 24, 2026
9c00248
update default cell
hero78119 Jul 24, 2026
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
111 changes: 101 additions & 10 deletions .github/workflows/run-benchmark-v2.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: "Ceno Benchmark v2"

# This workflow targets the self-hosted RTX 4090 runner. Avoid relying on NVML
# during CUDA compilation because the runner can temporarily deny NVML access.
env:
CUDA_ARCH: "89"

on:
workflow_dispatch:
inputs:
Expand All @@ -23,6 +28,37 @@ on:
required: true
type: string
default: "23817600"
proof-uuid:
# PROOF_UUID is the S3/HTTPS path segment written by server/prove_block.sh:
# https://${S3_BUCKET}.s3.${AWS_REGION}.amazonaws.com/${S3_PREFIX}/${PROOF_UUID}/${BLOCK_NUMBER}.bin
description: "PROOF_UUID: S3 namespace for ready-to-use generated inputs, usually the prover cluster/job name"
required: false
type: string
default: "idc-us-2-9"
s3_bucket:
# S3_BUCKET is the bucket that stores generated inputs, proofs, and metrics from prove_block.sh.
description: "S3_BUCKET: bucket containing prove_block.sh generated inputs and proof artifacts"
required: false
type: string
default: "prover-stat-data"
s3_prefix:
# S3_PREFIX is the prefix before PROOF_UUID in the prove_block.sh S3 object layout.
description: "S3_PREFIX: prefix before PROOF_UUID in the generated-input S3 path"
required: false
type: string
default: "proofs/testing"
aws_region:
# AWS_REGION selects the virtual-hosted S3 HTTPS endpoint for generated-input download.
description: "AWS_REGION: AWS region used in the generated-input HTTPS download URL"
required: false
type: string
default: "us-west-2"
chain_id:
# CHAIN_ID selects the local benchmark cache path rpc-cache/input/${CHAIN_ID}/${BLOCK_NUMBER}.bin.
description: "CHAIN_ID: chain id used in the local rpc-cache input path"
required: false
type: string
default: "1"
rerun_keygen:
description: "Rerun keygen"
required: false
Expand Down Expand Up @@ -95,14 +131,11 @@ on:
- "1"
- "2"
max_cell_per_shard:
# Magic number: the old shard cap was 1207959552 = ((1 << 30) * 9 / 4 / 2).
# Keccak preflight cost is now estimated with a 33/16 blowup instead of
# the old coarse 2x factor, so raise the shard cap by (33/16) / 2 = 33/32:
# 1207959552 * 33 / 32 = 1245708288.
description: "Value for CENO_MAX_CELL_PER_SHARD; magic default 1245708288 = 1207959552 * 33 / 32"
# Validated on blocks 23817600, 25580200, 25586000, and 25586200 on a 24GB RTX 4090.
description: "Value for CENO_MAX_CELL_PER_SHARD; validated default 4500000000"
required: false
type: string
default: "1245708288"
default: "4500000000"
gpu_jagged_reshape_log_height:
description: "Value for CENO_GPU_JAGGED_RESHAPE_LOG_HEIGHT; 25 probably OOMs on RTX 4090"
required: false
Expand Down Expand Up @@ -215,6 +248,34 @@ jobs:
# Create necessary directories
mkdir -p output
mkdir -p rpc-cache
S3_BUCKET="${{ inputs.s3_bucket }}"
S3_PREFIX="${{ inputs.s3_prefix }}"
AWS_REGION="${{ inputs.aws_region }}"
PROOF_UUID="${{ inputs['proof-uuid'] }}"
CHAIN_ID="${{ inputs.chain_id }}"
BLOCK_NUMBER="$block_number"

if [[ -n "$PROOF_UUID" ]]; then
HTTPS_INPUT_URL="https://${S3_BUCKET}.s3.${AWS_REGION}.amazonaws.com/${S3_PREFIX}/${PROOF_UUID}/${BLOCK_NUMBER}.bin"
LOCAL_INPUT_PATH="rpc-cache/input/${CHAIN_ID}/${BLOCK_NUMBER}.bin"
TMP_INPUT_PATH="${LOCAL_INPUT_PATH}.tmp"
mkdir -p "$(dirname "$LOCAL_INPUT_PATH")"
echo "Looking for generated input at ${HTTPS_INPUT_URL}"
set +e
curl -fL --connect-timeout 10 --max-time 120 --retry 3 --retry-delay 2 \
-o "$TMP_INPUT_PATH" "$HTTPS_INPUT_URL"
input_download_status=$?
set -e
if [[ $input_download_status -eq 0 && -s "$TMP_INPUT_PATH" ]]; then
mv "$TMP_INPUT_PATH" "$LOCAL_INPUT_PATH"
echo "Downloaded generated input to ${LOCAL_INPUT_PATH}"
else
rm -f "$TMP_INPUT_PATH" "$LOCAL_INPUT_PATH"
echo "No ready-to-use generated input found via HTTPS (status=${input_download_status}); benchmark will use RPC/cache generation"
fi
else
echo "PROOF_UUID is empty; skipping S3 generated-input download"
fi

# LOG_NAME with Block number and Timestamp(UTC+8)
TIMESTAMP=$(date -u -d '+8 hours' +'%Y%m%d-%H%M%S')
Expand All @@ -238,13 +299,14 @@ jobs:
CENO_GPU_JAGGED_RESHAPE_LOG_HEIGHT=${{ inputs.gpu_jagged_reshape_log_height }} \
CENO_GPU_CACHE_LEVEL=${{ inputs.gpu_cache_level }} RUSTFLAGS="-C target-feature=+avx2" \
RUST_LOG=info,openvm_stark_*=warn,openvm_cuda_common=warn \
cargo run --features "jemalloc,gpu,aot" --config net.git-fetch-with-cli=true \
cargo run --features "jemalloc,gpu,aot,parallel" --config net.git-fetch-with-cli=true \
--release --bin ceno-reth-benchmark-bin -- \
--mode prove-stark \
--block-number $block_number \
--rpc-url ${{ secrets.RPC_URL_1 }} \
--output-dir output \
--cache-dir rpc-cache > "$LOG_FILE" 2>&1
--cache-dir rpc-cache \
--chain-id "$CHAIN_ID" > "$LOG_FILE" 2>&1
benchmark_status=$?
set -e
grep -v '\[ceno-gpu\]' "$LOG_FILE" # filter out ceno-gpu logs
Expand Down Expand Up @@ -379,6 +441,34 @@ jobs:
# Create necessary directories
mkdir -p output
mkdir -p rpc-cache
S3_BUCKET="${{ inputs.s3_bucket }}"
S3_PREFIX="${{ inputs.s3_prefix }}"
AWS_REGION="${{ inputs.aws_region }}"
PROOF_UUID="${{ inputs['proof-uuid'] }}"
CHAIN_ID="${{ inputs.chain_id }}"
BLOCK_NUMBER="$block_number"

if [[ -n "$PROOF_UUID" ]]; then
HTTPS_INPUT_URL="https://${S3_BUCKET}.s3.${AWS_REGION}.amazonaws.com/${S3_PREFIX}/${PROOF_UUID}/${BLOCK_NUMBER}.bin"
LOCAL_INPUT_PATH="rpc-cache/input/${CHAIN_ID}/${BLOCK_NUMBER}.bin"
TMP_INPUT_PATH="${LOCAL_INPUT_PATH}.tmp"
mkdir -p "$(dirname "$LOCAL_INPUT_PATH")"
echo "Looking for generated input at ${HTTPS_INPUT_URL}"
set +e
curl -fL --connect-timeout 10 --max-time 120 --retry 3 --retry-delay 2 \
-o "$TMP_INPUT_PATH" "$HTTPS_INPUT_URL"
input_download_status=$?
set -e
if [[ $input_download_status -eq 0 && -s "$TMP_INPUT_PATH" ]]; then
mv "$TMP_INPUT_PATH" "$LOCAL_INPUT_PATH"
echo "Downloaded generated input to ${LOCAL_INPUT_PATH}"
else
rm -f "$TMP_INPUT_PATH" "$LOCAL_INPUT_PATH"
echo "No ready-to-use generated input found via HTTPS (status=${input_download_status}); benchmark will use RPC/cache generation"
fi
else
echo "PROOF_UUID is empty; skipping S3 generated-input download"
fi

# LOG_NAME with Block number and Timestamp(UTC+8)
TIMESTAMP=$(date -u -d '+8 hours' +'%Y%m%d-%H%M%S')
Expand All @@ -400,13 +490,14 @@ jobs:
CENO_GPU_JAGGED_RESHAPE_LOG_HEIGHT=${{ inputs.gpu_jagged_reshape_log_height }} \
CENO_GPU_CACHE_LEVEL=${{ inputs.gpu_cache_level }} RUSTFLAGS="-C target-feature=+avx2" \
RUST_LOG=info,openvm_stark_*=warn,openvm_cuda_common=warn \
cargo run --features "jemalloc,gpu,aot" --config net.git-fetch-with-cli=true \
cargo run --features "jemalloc,gpu,aot,parallel" --config net.git-fetch-with-cli=true \
--release --bin ceno-reth-benchmark-bin -- \
--mode prove-stark \
--block-number $block_number \
--rpc-url ${{ secrets.RPC_URL_1 }} \
--output-dir output \
--cache-dir rpc-cache > "$LOG_FILE" 2>&1
--cache-dir rpc-cache \
--chain-id "$CHAIN_ID" > "$LOG_FILE" 2>&1
benchmark_status=$?
set -e
grep -v '\[ceno-gpu\]' "$LOG_FILE" # filter out ceno-gpu logs
Expand Down
Loading
Loading