Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
84a0872
add profiling
ColoCarletti Jul 23, 2026
743d156
fix(profiling): field fixes from the first sessions on the 5090 box
ColoCarletti Jul 24, 2026
a48f5d4
docs(profiling): complete the toolkit README as a reference
ColoCarletti Jul 24, 2026
530f423
perf(gpu): async pinned D2H + pre-created event pool + precomputed-tr…
ColoCarletti Jul 24, 2026
f102818
perf(prover): pipeline + concurrent epoch proving in continuations
ColoCarletti Jul 24, 2026
58cb87e
perf(gpu): dim-split constraint interpreter with liveness-reused valu…
ColoCarletti Jul 23, 2026
057d68c
perf(gpu): commit preprocessed tables through the fused GPU pipeline
ColoCarletti Jul 23, 2026
966d335
perf(prover): overlap the global prove with the epoch proves' tail
ColoCarletti Jul 23, 2026
0098e94
perf(prover): share per-ELF DECODE artifacts across continuation epochs
ColoCarletti Jul 24, 2026
78d18b9
perf(prover): pipeline epoch trace builds onto a builder pool
ColoCarletti Jul 24, 2026
7c54af7
perf(prover): cache pre-captured AIR prototypes per table type
ColoCarletti Jul 24, 2026
0488420
profiling: re-home the toolkit spans onto the pipelined continuation …
ColoCarletti Jul 24, 2026
d1c4f5e
Merge branch 'main' into gpu-opt-5090
ColoCarletti Jul 27, 2026
7f65014
perf(prover): cache constraint-program lowering and share captured IR…
ColoCarletti Jul 27, 2026
9d79e78
perf(prover): cache domain-derived values process-wide
ColoCarletti Jul 27, 2026
ba96c96
perf(prover): dedup boundary-zerofier inverses per (domain, step)
ColoCarletti Jul 27, 2026
42dd78d
perf(gpu): keep boundary-zerofier columns resident on device
ColoCarletti Jul 27, 2026
f00499d
perf(gpu): keep the d=2 composition pipeline on device
ColoCarletti Jul 27, 2026
8201940
perf(gpu): fold FRI directly from the device-resident DEEP codeword
ColoCarletti Jul 27, 2026
827919d
fix(prover): keep lazy domain-cache initialization off the rayon pool
ColoCarletti Jul 27, 2026
1b1e4e5
chore(gpu): drop the unused DEEP download bridge and silence clippy
ColoCarletti Jul 27, 2026
131d024
Merge branch 'main' into gpu-opt-5090
ColoCarletti Jul 27, 2026
de0a318
fix(prover): drain the epoch pipeline on error instead of stranding i…
ColoCarletti Jul 27, 2026
ac37c3f
fix(gpu): harden device-path edge cases from review
ColoCarletti Jul 27, 2026
11aa778
Merge branch 'gpu-opt-5090' of github.com:yetanotherco/lambda_vm into…
ColoCarletti Jul 27, 2026
a21c3c1
test(prover): cover the epoch pipeline's mid-run error path
ColoCarletti Jul 27, 2026
8a48060
chore: fix profiling doc drift, untrack pycache, drop inert braces
ColoCarletti Jul 27, 2026
921296a
style: cargo fmt
ColoCarletti Jul 27, 2026
f2def57
chore: keep working notes out of the tree
ColoCarletti Jul 27, 2026
aa8788d
Merge branch 'main' into gpu-opt-5090
diegokingston Jul 28, 2026
0d33073
refactor(prover): prove continuation epochs on a single worker
ColoCarletti Jul 29, 2026
62ba934
chore: sync recursion bench lockfile with ecsm's num-integer dep
ColoCarletti Jul 29, 2026
3fd9bb8
Merge branch 'main' into gpu-opt-5090
ColoCarletti Jul 29, 2026
dc3632c
new opt
ColoCarletti Jul 29, 2026
e53f484
Merge branch 'main' into gpu-opt-round2-impl
ColoCarletti Jul 29, 2026
65f4d97
fix(gpu): harden round-2 residency paths after review
ColoCarletti Jul 29, 2026
e9b01ad
Merge branch 'main' into gpu-opt-round2-impl
ColoCarletti Jul 29, 2026
adbe561
perf(prover): replace table chunks with a VRAM-admitted per-table sch…
ColoCarletti Jul 29, 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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ executor/program_artifacts/
# Shared cargo target directory for ELF builds
executor/shared_target/


# Python bytecode
__pycache__/
*.pyc
13 changes: 12 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions bench_vs/lambda/recursion/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions bin/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@ env_logger = "0.11"
jemalloc-stats = ["dep:tikv-jemalloc-ctl"]
disk-spill = ["prover/disk-spill"]
instruments = ["prover/instruments", "stark/instruments"]
# GPU profiling build (Nsight): CUDA prover + instruments spans + NVTX ranges.
nvtx = ["prover/nvtx", "instruments"]
13 changes: 13 additions & 0 deletions crypto/crypto/src/merkle_tree/merkle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,19 @@ where
/// but no nodes. Used when paths are gathered from a device resident copy
/// (GPU) instead of this host tree, so the host nodes are never built.
/// [`get_proof_by_pos`](Self::get_proof_by_pos) must NOT be called on it.
/// True when this tree carries only its root (the nodes live elsewhere,
/// e.g. device-resident): openings must not walk this tree.
pub fn is_root_only(&self) -> bool {
#[cfg(feature = "disk-spill")]
{
self.nodes.is_empty() && self.mmap_backing.is_none()
}
#[cfg(not(feature = "disk-spill"))]
{
self.nodes.is_empty()
}
}

pub fn from_root(root: B::Node) -> Self {
MerkleTree {
root,
Expand Down
6 changes: 6 additions & 0 deletions crypto/math-cuda/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,17 @@ cudarc = { version = "0.19", default-features = false, features = [
] }
math = { path = "../math" }
rayon = "1.7"
# NVTX range emission for Nsight timelines (dlopen'd at runtime, see src/nvtx.rs).
libloading = { version = "0.8", optional = true }

[features]
# Test-only fault injection in FriCommitState. Production builds leave this
# off so the fault check is fully elided at compile time.
test-faults = []
# NVTX bindings for Nsight Systems profiling (ranges are emitted by the
# stark/prover layers). Zero-cost when disabled; when enabled but
# libnvToolsExt is absent at runtime, every call is a cheap no-op.
nvtx = ["dep:libloading"]

[dev-dependencies]
crypto = { path = "../crypto" }
Expand Down
12 changes: 10 additions & 2 deletions crypto/math-cuda/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ fn compile_kernel(src: &str, out_name: &str, have_nvcc: bool) {
println!("cargo:rerun-if-env-changed=CUDA_HOME");
println!("cargo:rerun-if-env-changed=CUDA_PATH");
println!("cargo:rerun-if-env-changed=CUDARC_NVCC_ARCH");
println!("cargo:rerun-if-env-changed=LAMBDA_VM_NVCC_LINEINFO");

// When nvcc is missing from PATH, emit an empty cubin stub so the crate
// still compiles. include_bytes! in src/device.rs needs the file to exist
Expand Down Expand Up @@ -115,8 +116,15 @@ fn compile_kernel(src: &str, out_name: &str, have_nvcc: bool) {
.map(|a| to_real_arch(&a))
.unwrap_or_else(|_| detect_arch());

let status = Command::new(nvcc_path())
.args(["--cubin", "-O3", "-std=c++17", "-arch", &arch, "-o"])
let mut cmd = Command::new(nvcc_path());
cmd.args(["--cubin", "-O3", "-std=c++17", "-arch", &arch]);
// SASS→source line mapping for Nsight Compute. Unlike -G this does not
// change codegen, but keep it opt-in so production cubins stay byte-stable.
if env::var("LAMBDA_VM_NVCC_LINEINFO").is_ok_and(|v| v != "0" && !v.is_empty()) {
cmd.arg("-lineinfo");
}
let status = cmd
.arg("-o")
.arg(&out_path)
.arg(&src_path)
.status()
Expand Down
Loading
Loading