Files
powdr/Cargo.toml
Steve Wang a7dcb5ea9f GPU proving for openvm (#3347)
All features in. Ready for review.

Depends on tags/branches:
1. K256
- tag:
https://github.com/powdr-labs/elliptic-curves-k256/releases/tag/v1.4.1-powdr,
which is the top commit of:
- branch:
https://github.com/powdr-labs/elliptic-curves-k256/tree/ovm-1.4-gpu
2. Stark-backend
- tag:
https://github.com/powdr-labs/stark-backend/releases/tag/v1.2.1-powdr,
which is the top commit of:
- branch: https://github.com/powdr-labs/stark-backend/tree/1.2.1-upgrade
3. OVM
- tag: https://github.com/powdr-labs/openvm/releases/tag/v1.4.1-powdr,
which is the top commit of:
- branch: https://github.com/powdr-labs/openvm/tree/1.4.1-upgrade

TODO list:
- [x] Sdk, config, and builder implementations 
- [x] Executor, circuit, chip, and prover implementations
- [x] OriginalArena and trace gen
- [x] Make simple tests like `guest_prove_simple` pass under `--feature
cuda` (current default)
- [x] Make current CI pass (CPU only) to test code path compatibility
(and likely many clean ups with clippy).
- [ ] Create CI to run under `--feature cuda` for all tests involving
proving and make them pass
- [x] GPU native APC trace generator (currently we copy dummy trace from
GPU, generate APC trace in CPU, and copy them back to GPU)
- [x] Integrate Reth

---------

Co-authored-by: schaeff <thibaut@powdrlabs.com>
Co-authored-by: Thibaut Schaeffer <schaeffer.thibaut@gmail.com>
Co-authored-by: Leandro Pacheco <contact@leandropacheco.com>
Co-authored-by: schaeff <thibaut@schaeff.fr>
Co-authored-by: Leo Alt <leo@powdrlabs.com>
2025-10-31 13:10:45 +00:00

154 lines
8.4 KiB
TOML

[workspace]
resolver = "2"
members = [
"number",
"constraint-solver",
"expression",
"riscv-elf",
"riscv-types",
"isa-utils",
"syscalls",
"autoprecompiles",
"openvm",
"cli-openvm",
"openvm/extensions/hints-guest",
"openvm/extensions/hints-transpiler",
"openvm/extensions/hints-circuit",
]
exclude = ["riscv-runtime"]
[workspace.package]
version = "0.1.4"
edition = "2021"
license = "MIT"
homepage = "https://powdr.org"
repository = "https://github.com/powdr-labs/powdr"
[workspace.dependencies]
# workspace crates
powdr-constraint-solver = { path = "./constraint-solver", version = "0.1.4" }
powdr-isa-utils = { path = "./isa-utils", version = "0.1.4" }
powdr-expression = { path = "./expression", version = "0.1.4" }
powdr-number = { path = "./number", version = "0.1.4" }
powdr-riscv-elf = { path = "./riscv-elf", version = "0.1.4" }
powdr-riscv-types = { path = "./riscv-types", version = "0.1.4" }
powdr-syscalls = { path = "./syscalls", version = "0.1.4" }
powdr-autoprecompiles = { path = "./autoprecompiles", version = "0.1.4" }
powdr-openvm = { path = "./openvm", version = "0.1.4" }
powdr-openvm-hints-guest = { path = "./openvm/extensions/hints-guest", version = "0.1.4" }
powdr-openvm-hints-transpiler = { path = "./openvm/extensions/hints-transpiler", version = "0.1.4" }
powdr-openvm-hints-circuit = { path = "./openvm/extensions/hints-circuit", version = "0.1.4" }
# openvm
openvm = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-build = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-rv32im-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-rv32im-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-rv32im-guest = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr", default-features = false }
openvm-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-circuit-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-circuit-primitives = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-circuit-primitives-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-instructions = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-instructions-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-sdk = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr", default-features = false, features = [
"parallel",
"jemalloc",
"nightly-features",
"evm-prove",
] }
openvm-ecc-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-ecc-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-keccak256-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-keccak256-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-sha256-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-sha256-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-algebra-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-algebra-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-bigint-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-bigint-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-pairing-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-pairing-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-native-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr", default-features = false }
openvm-native-recursion = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr", default-features = false }
openvm-platform = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
openvm-custom-insn = { git = "https://github.com/powdr-labs/openvm.git", rev = "v1.4.1-powdr" }
# stark-backend
openvm-stark-sdk = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "v1.2.1-powdr", default-features = false, features = [
"parallel",
"jemalloc",
"nightly-features",
] }
openvm-stark-backend = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "v1.2.1-powdr", default-features = false, features = [
"parallel",
"jemalloc",
] }
openvm-cuda-backend = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "v1.2.1-powdr", default-features = false }
openvm-cuda-builder = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "v1.2.1-powdr", default-features = false }
openvm-cuda-common = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "v1.2.1-powdr", default-features = false }
[profile.pr-tests]
inherits = "dev"
opt-level = 3
debug = "line-tables-only"
debug-assertions = true
overflow-checks = true
panic = 'unwind'
incremental = true # This is true because target is cached
codegen-units = 256
[profile.release-with-debug]
inherits = "release"
debug = true
[workspace.lints.clippy]
print_stdout = "deny"
uninlined_format_args = "deny"
iter_over_hash_type = "deny"
# Uncomment both patches below for local stark-backend and openvm.
# The local openvm also needs to have stark-backend patched so all types match.
# [patch."https://github.com/powdr-labs/stark-backend.git"]
# openvm-stark-sdk = { path = "../stark-backend/crates/stark-sdk", default-features = false }
# openvm-stark-backend = { path = "../stark-backend/crates/stark-backend", default-features = false }
# openvm-cuda-backend = { path = "../stark-backend/crates/cuda-backend", default-features = false }
# openvm-cuda-builder = { path = "../stark-backend/crates/cuda-builder", default-features = false }
# openvm-cuda-common = { path = "../stark-backend/crates/cuda-common", default-features = false }
# [patch."https://github.com/powdr-labs/openvm.git"]
# openvm = { path = "../openvm/crates/toolchain/openvm" }
# openvm-build = { path = "../openvm/crates/toolchain/build" }
# openvm-rv32im-circuit = { path = "../openvm/extensions/rv32im/circuit/" }
# openvm-rv32im-transpiler = { path = "../openvm/extensions/rv32im/transpiler" }
# openvm-rv32im-guest = { path = "../openvm/extensions/rv32im/guest" }
# openvm-transpiler = { path = "../openvm/crates/toolchain/transpiler" }
# openvm-circuit = { path = "../openvm/crates/vm" }
# openvm-circuit-derive = { path = "../openvm/crates/vm/derive" }
# openvm-circuit-primitives = { path = "../openvm/crates/circuits/primitives" }
# openvm-circuit-primitives-derive = { path = "../openvm/crates/circuits/primitives/derive" }
# openvm-instructions = { path = "../openvm/crates/toolchain/instructions" }
# openvm-instructions-derive = { path = "../openvm/crates/toolchain/instructions/derive" }
# openvm-sdk = { path = "../openvm/crates/sdk" }
# openvm-ecc-circuit = { path = "../openvm/extensions/ecc/circuit" }
# openvm-ecc-transpiler = { path = "../openvm/extensions/ecc/transpiler" }
# openvm-keccak256-circuit = { path = "../openvm/extensions/keccak256/circuit" }
# openvm-keccak256-transpiler = { path = "../openvm/extensions/keccak256/transpiler" }
# openvm-sha256-circuit = { path = "../openvm/extensions/sha256/circuit" }
# openvm-sha256-transpiler = { path = "../openvm/extensions/sha256/transpiler" }
# openvm-algebra-circuit = { path = "../openvm/extensions/algebra/circuit" }
# openvm-algebra-transpiler = { path = "../openvm/extensions/algebra/transpiler" }
# openvm-bigint-circuit = { path = "../openvm/extensions/bigint/circuit" }
# openvm-bigint-transpiler = { path = "../openvm/extensions/bigint/transpiler" }
# openvm-pairing-circuit = { path = "../openvm/extensions/pairing/circuit" }
# openvm-pairing-transpiler = { path = "../openvm/extensions/pairing/transpiler" }
# openvm-native-circuit = { path = "../openvm/extensions/native/circuit" }
# openvm-native-recursion = { path = "../openvm/extensions/native/recursion" }
# openvm-platform = { path = "../openvm/crates/toolchain/platform" }
# openvm-custom-insn = { path = "../openvm/crates/toolchain/custom_insn" }