diff --git a/crates/ml/build.rs b/crates/ml/build.rs index 3870f7bb2..57b88f195 100644 --- a/crates/ml/build.rs +++ b/crates/ml/build.rs @@ -36,7 +36,12 @@ fn main() { println!("cargo:rerun-if-changed={}", trade_physics_header.display()); println!("cargo:rerun-if-changed={}", sp4_histogram_p99_header.display()); - // Detect GPU architecture from env or default to sm_80 + // Detect GPU architecture from env or default to sm_80. + // `rerun-if-env-changed` is mandatory: the cargo-target PVC is shared + // across H100 (sm_90) and L40S (sm_89) jobs, and without this trigger + // cargo serves stale cubins compiled for the previous arch on every + // subsequent build, producing CUDA_ERROR_NO_BINARY_FOR_GPU at runtime. + println!("cargo:rerun-if-env-changed=CUDA_COMPUTE_CAP"); let cuda_compute_cap = std::env::var("CUDA_COMPUTE_CAP").unwrap_or_else(|_| "80".to_string()); let arch = format!("sm_{cuda_compute_cap}");