Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
771274c
Sync OpenVM to v2.0.0-beta.2
leonardoalt Apr 20, 2026
f8cb5ab
Fix API renames for OpenVM v2: sha256->sha2, set_transpiler->builder
leonardoalt Apr 20, 2026
1bf8954
cargo fmt
leonardoalt Apr 20, 2026
916eafc
Bump CI Rust stable version to 1.91.1 (OpenVM v2 MSRV)
leonardoalt Apr 20, 2026
e261ccf
Use v2-powdr-beta.2 branches, comment out local patches for CI
leonardoalt Apr 20, 2026
2483d2c
Update OpenVM guest toolchain to nightly-2026-01-18 in CI
leonardoalt Apr 20, 2026
59d6259
Update guest programs to use OpenVM v2-powdr-beta.2 branch
leonardoalt Apr 20, 2026
8e1dd6e
Update k256 fork to v2.0.0-beta.2-upgrade
leonardoalt Apr 20, 2026
3e9a3ab
Update k256 rev with hints-guest name fix
leonardoalt Apr 20, 2026
7577b76
Update expect! test expectations for OpenVM v2
leonardoalt Apr 20, 2026
e497288
Fix GPU trace generator for OpenVM v2 sha2 field rename
leonardoalt Apr 20, 2026
26a9df5
Serialize GPU quick tests to avoid device-memory contention
leonardoalt Apr 20, 2026
dc80cee
Fix CPU prover performance: codegen-units=16, lto=thin, enable aot
leonardoalt Apr 20, 2026
3bd8b53
Remove POWDR_OPENVM_SEGMENT_DELTA from CI
leonardoalt Apr 20, 2026
1aa3d1f
Restore POWDR_OPENVM_SEGMENT_DELTA in CI
leonardoalt Apr 20, 2026
fb68d00
Cap test segment height so GPU tests fit when run in parallel
leonardoalt Apr 21, 2026
da6861d
Cap GPU test parallelism to 4 so concurrent allocations fit in device…
leonardoalt Apr 21, 2026
600904c
Merge branch 'main' of https://github.com/powdr-labs/powdr into openv…
leonardoalt Apr 21, 2026
8668d3d
Fix manual precompile guests for OpenVM v2 API changes
leonardoalt Apr 22, 2026
aec87bd
Remove custom_pvs, use stark-backend tag v2.0.0-beta.2-powdr
leonardoalt Apr 27, 2026
a2f778e
O1: Replace BTreeMap with Vec for variable lookup in bus replay
qwang98 Apr 30, 2026
20c0c03
O2: Compile bus interaction expressions to LinearCombination
qwang98 Apr 30, 2026
bf02798
O5: Parallelize fill_rows_and_replay with rayon
qwang98 Apr 30, 2026
1f145d4
Fix formatting (cargo fmt)
qwang98 Apr 30, 2026
4e6a9fc
Address PR feedback: remove optimization labels, improve docs
qwang98 Apr 30, 2026
5a717d4
Remove benchmarking instrumentation from production code
qwang98 Apr 30, 2026
383d949
Fix comment: mention dense Vec for O(1) lookups
qwang98 Apr 30, 2026
a358ba8
Move rayon import to top level, remove inner block, add parallelizati…
qwang98 Apr 30, 2026
47288a8
Rename id_to_idx back to apc_poly_id_to_index to minimize diff
qwang98 Apr 30, 2026
41e4671
Refactor Vec construction to iterator fold style
qwang98 Apr 30, 2026
28e5637
Restore removed comment on None branch
qwang98 Apr 30, 2026
35ed231
Extend CompiledExpr with quadratic product support
qwang98 Apr 30, 2026
11230a5
Simplify Vec construction: collect values directly from BTreeMap
qwang98 Apr 30, 2026
d62d4e6
Refactor eval loop to iterator fold style
qwang98 Apr 30, 2026
540e264
Fix formatting (cargo fmt)
qwang98 Apr 30, 2026
4e225df
Fix index out of bounds: use sparse Vec for poly ID lookup
qwang98 May 1, 2026
72b50ff
Use iterator style for poly ID to index Vec construction
qwang98 May 1, 2026
1979a8b
Add JIT trace gen infrastructure: column-to-record mapping for BaseAlu
qwang98 May 1, 2026
7d15ce7
Implement JIT trace gen for BaseAlu with validation
qwang98 May 1, 2026
af1c598
Add LoadStore JIT mapping — 41,976 column values validated
qwang98 May 1, 2026
110eeb7
Add Shift + BranchEqual mappings — keccak JIT end-to-end works
qwang98 May 1, 2026
3c50140
Parameterize JIT mappings by arena type (Matrix vs Dense)
qwang98 May 1, 2026
add872d
GPU JIT trace gen: CUDA kernel + Rust integration
qwang98 May 1, 2026
11d5915
Opt 1: Fast-path for direct-copy columns in GPU JIT kernel
qwang98 May 1, 2026
83add05
Revert "Opt 1: Fast-path for direct-copy columns in GPU JIT kernel"
qwang98 May 1, 2026
2742a2a
Fix: enable cuda feature in CLI by default + cleanup timing code
qwang98 May 1, 2026
af08038
Analysis: GPU JIT is 3.5x slower than baseline (descriptor dispatch o…
qwang98 May 1, 2026
a2699eb
Add NVRTC trace-gen backend with multi-limb fusion
qwang98 May 5, 2026
70ac436
NVRTC: persistent disk PTX cache
qwang98 May 5, 2026
01c3abd
Fix arena H2D regression + add sub-stage trace_gen profiling
qwang98 May 5, 2026
ad5d73a
Per-chip baseline H2D timing + isolated H2D-only measurement + VPMM w…
qwang98 May 5, 2026
914a3cf
Pin down the 60ms arena_direct_h2d gap to host-side free() of arena m…
qwang98 May 5, 2026
45b27b5
Add JIT mappings for LessThanCoreAir<4,8> and BranchLessThanCoreAir<4,8>
qwang98 May 6, 2026
ccbd6ad
Add JIT mappings for Auipc + Jalr (APC=30 unblocked)
qwang98 May 6, 2026
843fa9a
NVRTC bus kernel Phase 0+1: spike measurement + run_bus_pass refactor
qwang98 May 6, 2026
555e7c7
NVRTC bus kernel Phase 2: var_range emitter + launcher_bus_v1 + verti…
qwang98 May 6, 2026
7fd8bb7
NVRTC bus kernel Phase 3: tuple_range emitter + rayon parallel compile
qwang98 May 6, 2026
c5e8cb3
NVRTC bus kernel Phase 5: bitwise_lookup emitter inline
qwang98 May 6, 2026
3142820
NVRTC bus kernel Phase 4 (partial): wire POWDR_JIT_BACKEND_BUS=nvrtc
qwang98 May 6, 2026
fe629ef
NVRTC bus kernel: kind-templated kernels with __constant__ op tables
qwang98 May 6, 2026
798397e
NVRTC bus kernel: sub-stage timing + affine arg support
qwang98 May 6, 2026
206075e
NVRTC bus kernel: per-unhandled diagnostic — bytecode-cost + shape hi…
qwang98 May 6, 2026
3cee288
NVRTC bus kernel: multi-term affine arg decoder (up to 5 terms)
qwang98 May 6, 2026
6a7fe36
NVRTC bus kernel: per-APC codegen path (POWDR_BUS_CODEGEN=1)
qwang98 May 7, 2026
0d7172f
NVRTC bus codegen: bilinear arg support — captures the keccak quadrat…
qwang98 May 7, 2026
76e434f
NVRTC bus codegen: per-APC kernel cache + eager warm at construction
qwang98 May 7, 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
6 changes: 3 additions & 3 deletions .github/actions/init-testing-instance-gpu/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ runs:
- name: Install Rust deps
shell: bash
run: rustup install nightly-2025-02-14 --component rust-src
- name: Install OpenVM guest toolchain (nightly-2025-08-02)
- name: Install OpenVM guest toolchain (nightly-2026-01-18)
shell: bash
run: |
rustup toolchain install nightly-2025-08-02
rustup component add rust-src --toolchain nightly-2025-08-02
rustup toolchain install nightly-2026-01-18
rustup component add rust-src --toolchain nightly-2026-01-18
- uses: taiki-e/install-action@nextest


6 changes: 3 additions & 3 deletions .github/actions/init-testing-instance/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ runs:
- name: Install Rust deps
shell: bash
run: rustup install nightly-2025-02-14 --component rust-src
- name: Install OpenVM guest toolchain (nightly-2025-08-02)
- name: Install OpenVM guest toolchain (nightly-2026-01-18)
shell: bash
run: |
rustup toolchain install nightly-2025-08-02
rustup component add rust-src --toolchain nightly-2025-08-02
rustup toolchain install nightly-2026-01-18
rustup component add rust-src --toolchain nightly-2026-01-18
- uses: taiki-e/install-action@nextest
10 changes: 5 additions & 5 deletions .github/workflows/build-cache.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@ jobs:
run: rustup toolchain install nightly-2025-10-01 --component clippy,rustfmt
- name: Install Rust toolchain
run: rustup toolchain install nightly-2025-02-14 --component rust-src
- name: Install Rust toolchain 1.91 (stable)
run: rustup toolchain install 1.91
- name: Install Rust toolchain 1.91.1 (stable, OpenVM v2 MSRV)
run: rustup toolchain install 1.91.1
- name: Set cargo to perform shallow clones
run: echo "CARGO_NET_GIT_FETCH_WITH_CLI=true" >> $GITHUB_ENV
- name: Format
run: cargo fmt --all --check --verbose
- name: Cargo check with Rust 1.91 (default features)
run: cargo +1.91 check --all-targets
- name: Cargo check with Rust 1.91.1 (default features)
run: cargo +1.91.1 check --all-targets
- name: Lint no default features
run: cargo clippy --all --all-targets --no-default-features --profile pr-tests --verbose -- -D warnings
- name: Build
run: cargo build --all-targets --features metrics --all --profile pr-tests --verbose
run: cargo build --all-targets --features metrics,aot --all --profile pr-tests --verbose
###############################################################################

- name: Delete the old cache
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/nightly-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ jobs:
key: ${{ runner.os }}-cargo-pr-tests
- name: Install Rust toolchain nightly-2025-10-01 (with clippy and rustfmt)
run: rustup toolchain install nightly-2025-10-01 --component clippy,rustfmt,rust-src
- name: Install Rust toolchain 1.91
run: rustup toolchain install 1.91
- name: Install Rust toolchain 1.91.1
run: rustup toolchain install 1.91.1
- name: Install riscv target
run: rustup target add riscv32imac-unknown-none-elf --toolchain nightly-2025-10-01
- name: Install test dependencies
Expand Down Expand Up @@ -78,10 +78,10 @@ jobs:
run: cargo build --release -p powdr-openvm

- name: Install cargo openvm
# Rust 1.91 is needed by fresher versions of dependencies of cargo-openvm.
# Rust 1.91.1 is needed by fresher versions of dependencies of cargo-openvm.
run: |
rustup toolchain install 1.91
cargo +1.91 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm
rustup toolchain install 1.91.1
cargo +1.91.1 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm

- name: Setup python venv
run: |
Expand Down Expand Up @@ -213,10 +213,10 @@ jobs:
key: ${{ runner.os }}-cargo-release-apc-gpu-${{ hashFiles('**/Cargo.toml') }}

- name: Install cargo openvm
# Rust 1.91 is needed by fresher versions of dependencies of cargo-openvm.
# Rust 1.91.1 is needed by fresher versions of dependencies of cargo-openvm.
run: |
rustup toolchain install 1.91
cargo +1.91 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm
rustup toolchain install 1.91.1
cargo +1.91.1 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm

- name: Setup python venv
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/post-merge-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ jobs:
run: cargo build --release -p powdr-openvm

- name: Install cargo openvm
# Rust 1.91 is needed by fresher versions of dependencies of cargo-openvm.
# Rust 1.91.1 is needed by fresher versions of dependencies of cargo-openvm.
run: |
rustup toolchain install 1.91
cargo +1.91 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm
rustup toolchain install 1.91.1
cargo +1.91.1 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm

- name: Run keccak with 100 APCs
run: /usr/bin/time -v cargo run --bin powdr_openvm_riscv -r prove guest-keccak --input 10000 --autoprecompiles 100 --recursion
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/pr-tests-with-secrets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ jobs:
run: cargo build --release -p powdr-openvm

- name: Install cargo openvm
# Rust 1.91 is needed by fresher versions of dependencies of cargo-openvm.
# Rust 1.91.1 is needed by fresher versions of dependencies of cargo-openvm.
run: |
rustup toolchain install 1.91
cargo +1.91 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm
rustup toolchain install 1.91.1
cargo +1.91.1 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm

- name: Patch benchmark
uses: ./.github/actions/patch-openvm-reth-benchmark
Expand Down Expand Up @@ -106,10 +106,10 @@ jobs:
run: cargo build --release -p powdr-openvm

- name: Install cargo openvm
# Rust 1.91 is needed by fresher versions of dependencies of cargo-openvm.
# Rust 1.91.1 is needed by fresher versions of dependencies of cargo-openvm.
run: |
rustup toolchain install 1.91
cargo +1.91 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm
rustup toolchain install 1.91.1
cargo +1.91.1 install --git 'http://github.com/powdr-labs/openvm.git' --rev "v1.4.2-powdr-rc.4" --locked cargo-openvm

- name: Setup python venv
run: |
Expand Down
25 changes: 14 additions & 11 deletions .github/workflows/pr-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,18 @@ jobs:
##### The block below is shared between cache build and PR build workflows #####
- name: Install Rust toolchain nightly-2025-10-01 (with clippy and rustfmt)
run: rustup toolchain install nightly-2025-10-01 --component clippy,rustfmt
- name: Install Rust toolchain 1.91 (stable)
run: rustup toolchain install 1.91
- name: Install Rust toolchain 1.91.1 (stable)
run: rustup toolchain install 1.91.1
- name: Set cargo to perform shallow clones
run: echo "CARGO_NET_GIT_FETCH_WITH_CLI=true" >> $GITHUB_ENV
- name: Format
run: cargo fmt --all --check --verbose
- name: Cargo check with Rust 1.91 (default features)
run: cargo +1.91 check --all-targets
- name: Cargo check with Rust 1.91.1 (default features)
run: cargo +1.91.1 check --all-targets
- name: Lint no default features
run: cargo clippy --all --all-targets --features metrics --profile pr-tests --verbose -- -D warnings
run: cargo clippy --all --all-targets --features metrics,aot --profile pr-tests --verbose -- -D warnings
- name: Build (CPU)
run: cargo build --all-targets --features metrics --all --profile pr-tests --verbose
run: cargo build --all-targets --features metrics,aot --all --profile pr-tests --verbose
###############################################################################

- uses: taiki-e/install-action@nextest
Expand Down Expand Up @@ -161,14 +161,14 @@ jobs:

- name: Install Rust toolchain nightly-2025-10-01 (with clippy and rustfmt)
run: rustup toolchain install nightly-2025-10-01 --component clippy,rustfmt
- name: Install Rust toolchain 1.91 (stable)
run: rustup toolchain install 1.91
- name: Install Rust toolchain 1.91.1 (stable)
run: rustup toolchain install 1.91.1
- name: Set cargo to perform shallow clones
run: echo "CARGO_NET_GIT_FETCH_WITH_CLI=true" >> $GITHUB_ENV
- name: Format
run: cargo fmt --all --check --verbose
- name: Cargo check with Rust 1.91 (all features)
run: cargo +1.91 check --all-targets
- name: Cargo check with Rust 1.91.1 (all features)
run: cargo +1.91.1 check --all-targets
- name: Lint no default features
run: cargo clippy --all --all-targets --features cuda,metrics,aot --profile pr-tests --verbose -- -D warnings
- name: Build (GPU)
Expand Down Expand Up @@ -207,7 +207,10 @@ jobs:
- name: Init testing instance (GPU)
uses: ./.github/actions/init-testing-instance-gpu
- name: Run quick GPU tests from powdr-openvm-riscv only
run: cargo nextest run --archive-file tests_gpu.tar.zst --workspace-remap . --verbose --no-tests=warn
# Cap parallelism so concurrent GPU allocations fit in ~20 GiB of device
# memory on our shared runner. Heavy APC tests can each consume several
# GiB, so we run at most 4 at a time.
run: cargo nextest run --archive-file tests_gpu.tar.zst --workspace-remap . --verbose --no-tests=warn --test-threads=4
# run: cargo nextest run --archive-file tests_gpu.tar.zst --workspace-remap . --verbose --partition count:"${{ matrix.test }}"/7 --no-tests=warn

# NOTE: test_apc_reth_app_proof has been moved to pr-tests-with-secrets.yml
Expand Down
Loading
Loading