Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions bench/sf1000-repro/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ pixi run bash bench/sf1000-repro/build-libcudf.sh
DATA=/path/to/tpch_parquet_sf1000 pixi run bash bench/sf1000-repro/run.sh
```

The build helper takes `nvJitLink.h` and `libnvJitLink.so.13` from Pixi's
`libnvjitlink-dev`/`libnvjitlink` packages; it does not require a system CUDA
toolkit. To check those inputs without cloning or compiling cuDF, run
`SIRIUS_CUDA_PREFLIGHT_ONLY=1 pixi run --frozen bash bench/sf1000-repro/build-libcudf.sh`.

For the TPC-H **official power/throughput run** (RF1/RF2 refresh functions, Power@Size /
Throughput@Size / QphH@Size) with this same performance stack, use `run-power.sh` — it runs on a
native `.duckdb` dataset (the MVCC refresh path needs it) with the mixed-tier pin layout in
Expand Down
39 changes: 31 additions & 8 deletions bench/sf1000-repro/build-libcudf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,34 @@ CUDF_SRC="${CUDF_SRC:-$HOME/cudf-src}"
SHIM="${SHIM:-$HOME/cudf-shim}"
BRANCH=perf/sirius-sf1000-repro

[ -n "${CONDA_PREFIX:-}" ] || { echo "ERROR: run inside the pixi env (pixi run bash $0)"; exit 1; }
[ -n "${PIXI_PROJECT_ROOT:-}" ] && [ -n "${PIXI_ENVIRONMENT_NAME:-}" ] &&
[ -d "${CONDA_PREFIX:-}" ] &&
[ "$(realpath "$CONDA_PREFIX")" = "$(realpath "$PIXI_PROJECT_ROOT/.pixi/envs/$PIXI_ENVIRONMENT_NAME")" ] || {
echo "ERROR: run inside the Sirius pixi env (pixi run --frozen bash $0)" >&2
exit 1
}

# jitify2_preprocess needs the development header, not just libnvJitLink's
# runtime. Both must come from the same Pixi environment as cuDF and NVCC.
NVJITLINK_HEADER=
for include_dir in "$CONDA_PREFIX/include" "$CONDA_PREFIX/targets/$(uname -m)-linux/include"; do
if [ -f "$include_dir/nvJitLink.h" ]; then
NVJITLINK_HEADER=$include_dir/nvJitLink.h
break
fi
done
[ -n "$NVJITLINK_HEADER" ] || {
echo "ERROR: Pixi libnvjitlink-dev is missing nvJitLink.h; run pixi install --frozen" >&2
exit 1
}
[ -f "$CONDA_PREFIX/lib/libnvJitLink.so.13" ] || {
echo "ERROR: Pixi libnvjitlink is missing libnvJitLink.so.13; run pixi install --frozen" >&2
exit 1
}
if [ "${SIRIUS_CUDA_PREFLIGHT_ONLY:-0}" = 1 ]; then
echo "Pixi CUDA development inputs are present in $CONDA_PREFIX"
exit 0
fi

if [ ! -d "$CUDF_SRC/.git" ]; then
echo "==> cloning felipeblazing/cudf @ $BRANCH"
Expand All @@ -26,15 +53,11 @@ else
git -C "$CUDF_SRC" checkout -q FETCH_HEAD
fi

# The pixi env ships the libnvjitlink RUNTIME but not its dev header, and jitify2_preprocess
# needs nvJitLink.h. Symlink JUST that header (plus the .so name jitify expects) rather than
# putting the whole system CUDA include tree ahead of conda's -- that would cause version skew.
# Keep the jitify2 shim, but link only inputs from the activated Pixi prefix.
echo "==> nvJitLink shim at $SHIM"
mkdir -p "$SHIM/include" "$SHIM/lib"
SYS_CUDA=$(ls -d /usr/local/cuda-13.*/targets/*/include 2>/dev/null | head -1)
[ -n "$SYS_CUDA" ] || { echo "ERROR: no system CUDA 13.x include dir for nvJitLink.h"; exit 1; }
ln -sf "$SYS_CUDA/nvJitLink.h" "$SHIM/include/nvJitLink.h"
ln -sf "$(ls "$CONDA_PREFIX"/lib/libnvJitLink.so.13* | head -1)" "$SHIM/lib/libnvJitLink.so"
ln -sf "$NVJITLINK_HEADER" "$SHIM/include/nvJitLink.h"
ln -sf "$CONDA_PREFIX/lib/libnvJitLink.so.13" "$SHIM/lib/libnvJitLink.so"

# CRITICAL: append to $CXXFLAGS / $LDFLAGS, never replace them. Passing a bare
# -DCMAKE_CXX_FLAGS= clobbers conda's flags, dropping -isystem $CONDA_PREFIX/include; CMake then
Expand Down
3 changes: 3 additions & 0 deletions pixi.lock

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

3 changes: 3 additions & 0 deletions pixi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ bc = "*"
cmake = "4.*"
cuda-nvcc = "*"
cuda-nvml-dev = "*"
cuda-sanitizer-api = "*"
cxx-compiler = "*"
make = "*"
ninja = "*"
Expand Down Expand Up @@ -88,6 +89,7 @@ platforms = ["linux-64-cuda13", "linux-aarch64-cuda13"]
cuda-version = "13.4.*"
libcudf = "==26.08.01"
libcuvs = "==26.08.01"
libnvjitlink-dev = "*"

[feature.cuda13.activation.env]
# GPU architectures: Turing through Blackwell (75, 80, 86, 89, 90a, 100f, 120a, 120)
Expand Down Expand Up @@ -117,6 +119,7 @@ cuda-version = "13.3.*"
libcudf = "==26.08.01"
libcuvs = "==26.08.01"
librmm = "26.08.*"
libnvjitlink-dev = "*"
gcc_linux-64 = "14.*"
gxx_linux-64 = "14.*"
patchelf = "*"
Expand Down
16 changes: 11 additions & 5 deletions test/scripts/sanitizer_gate_22.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,16 @@

set -euo pipefail

CUDA_BIN=$(ls -1 /usr/local/cuda*/bin/compute-sanitizer 2>/dev/null | head -1)
if [[ -z "${CUDA_BIN}" ]]; then
echo "[p22-sanitizer-gate] ERROR: compute-sanitizer not found under /usr/local/cuda*/bin/"
echo "[p22-sanitizer-gate] HINT: install CUDA toolkit, or set CUDA_BIN env override"
if [[ -z "${PIXI_PROJECT_ROOT:-}" || -z "${PIXI_ENVIRONMENT_NAME:-}" || -z "${CONDA_PREFIX:-}" ||
! -d "${CONDA_PREFIX:-}" ||
"$(realpath "${CONDA_PREFIX:-/nonexistent}")" != "$(realpath "${PIXI_PROJECT_ROOT:-/nonexistent}/.pixi/envs/${PIXI_ENVIRONMENT_NAME:-missing}")" ]]; then
echo "[p22-sanitizer-gate] ERROR: run inside the Sirius Pixi environment"
exit 2
fi
CUDA_BIN="${CONDA_PREFIX}/bin/compute-sanitizer"
if [[ ! -x "${CUDA_BIN}" ]]; then
echo "[p22-sanitizer-gate] ERROR: Pixi compute-sanitizer missing at ${CUDA_BIN}"
echo "[p22-sanitizer-gate] HINT: run pixi install --frozen"
exit 2
fi

Expand All @@ -79,7 +85,7 @@ TIMEOUT_SEC="${P22_TIMEOUT_SEC:-600}"

if [[ ! -x "${UNIT}" ]]; then
echo "[p22-sanitizer-gate] ERROR: unittest binary not found or not executable at ${UNIT}"
echo "[p22-sanitizer-gate] HINT: build first (mcp__project-commands__run_command build)"
echo "[p22-sanitizer-gate] HINT: build the Sirius unit tests in this Pixi environment"
echo "[p22-sanitizer-gate] HINT: or set P22_UNITTEST_BIN env override"
exit 2
fi
Expand Down
Loading