diff --git a/.github/workflows/buildcupy.yaml b/.github/workflows/buildcupy.yaml index 56f917f8..b2dd3a34 100644 --- a/.github/workflows/buildcupy.yaml +++ b/.github/workflows/buildcupy.yaml @@ -10,7 +10,9 @@ on: jobs: build: - runs-on: self-hosted + runs-on: + - self-hosted + - exouser steps: - name: Check out source repository uses: actions/checkout@v6 diff --git a/.github/workflows/buildcupy1.yaml b/.github/workflows/buildcupy1.yaml new file mode 100644 index 00000000..5625c4e9 --- /dev/null +++ b/.github/workflows/buildcupy1.yaml @@ -0,0 +1,56 @@ +name: PyLops Testing (CuPy1) + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: + - main + - dev + +jobs: + build: + runs-on: + - self-hosted + - exouser + steps: + - name: Check out source repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + - name: Install uv with Python 3.11 + uses: astral-sh/setup-uv@v6 + with: + python-version: 3.11 + - name: Install dependencies and pylops + run: | + uv sync --locked --extra advanced \ + --extra stat --extra gpu-cu12 \ + --extra deep-cu128 --all-groups + echo "done!" + - name: Install CUDA 12.2 toolkit + run: | + # Install a consistent CUDA 12.2 toolchain in the uv environment so + # NVCC/NVRTC/Runtime agree with each other and numba can resolve + # both libnvvm and libcudart from a single CUDA_HOME. + uv add nvidia-cuda-nvcc-cu12==12.2.128 + uv add nvidia-cuda-runtime-cu12==12.2.140 + uv add nvidia-cuda-nvrtc-cu12==12.2.140 + # The wheel layout splits nvvm (in cuda_nvcc) and cudart (in cuda_runtime), + # so create the lib64 view expected by numba in CUDA_HOME. + CUDA_NVCC_ROOT="$PWD/.venv/lib/python3.11/site-packages/nvidia/cuda_nvcc" + CUDA_RUNTIME_ROOT="$PWD/.venv/lib/python3.11/site-packages/nvidia/cuda_runtime" + mkdir -p "$CUDA_NVCC_ROOT/lib64" + ln -sf libnvvm.so "$CUDA_NVCC_ROOT/nvvm/lib64/libnvvm.so.4" + ln -sf "$CUDA_RUNTIME_ROOT/lib/libcudart.so.12" "$CUDA_NVCC_ROOT/lib64/libcudart.so.12" + ln -sf libcudart.so.12 "$CUDA_NVCC_ROOT/lib64/libcudart.so" + echo "done!" + - name: Test with pytest + run: | + # Use the pip-installed pinned CUDA 12.2 toolchain from uv, not any + # system CUDA on the runner. + export CUDA_HOME="$PWD/.venv/lib/python3.11/site-packages/nvidia/cuda_nvcc" + export CUPY_PYLOPS=1 + export TEST_CUPY_PYLOPS=1 + uv run pytest --color=yes pytests/ + echo "done!"