diff --git a/scripts/ptx-cache-invalidate.sh b/scripts/ptx-cache-invalidate.sh index 2192cd526..c32552964 100755 --- a/scripts/ptx-cache-invalidate.sh +++ b/scripts/ptx-cache-invalidate.sh @@ -16,13 +16,17 @@ set -euo pipefail -KERNEL_DIR="crates/ml/src/cuda_pipeline" +KERNEL_DIRS="crates/ml/src/cuda_pipeline crates/ml-dqn/src crates/ml-core/src/cuda_autograd crates/ml-ppo/src/cuda_nn" CACHE_DIR="${1:-${CARGO_TARGET_DIR:+${CARGO_TARGET_DIR}/.ptx_cache}}" CACHE_DIR="${CACHE_DIR:-/tmp/.ptx_cache}" -# Compute content hash of all CUDA source files -HASH=$(find "$KERNEL_DIR" -type f \( -name '*.cu' -o -name '*.cuh' \) \ - -exec sha256sum {} + 2>/dev/null | sort | sha256sum | cut -d' ' -f1) +# Compute content hash of CUDA sources AND build.rs (nvcc flags). +# build.rs changes (e.g. removing --use_fast_math) produce different cubins +# even when .cu source is unchanged — must invalidate cache. +HASH=$( { + find $KERNEL_DIRS -type f \( -name '*.cu' -o -name '*.cuh' \) -exec sha256sum {} + 2>/dev/null + find crates/ml crates/ml-dqn crates/ml-core crates/ml-ppo -maxdepth 1 -name 'build.rs' -exec sha256sum {} + 2>/dev/null +} | sort | sha256sum | cut -d' ' -f1) STAMP_FILE="${CACHE_DIR}/.kernel_hash"