diff --git a/.github/workflows/gpu-ci.yml b/.github/workflows/gpu-ci.yml new file mode 100644 index 000000000..053114e03 --- /dev/null +++ b/.github/workflows/gpu-ci.yml @@ -0,0 +1,57 @@ +# Runs the test suite on a self-hosted GPU machine with CUDA and OpenCL enabled +name: GPU tests + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: [dev] + merge_group: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + cuda: + name: Rust tests on CUDA + if: github.event_name != 'pull_request' || github.event.action == 'enqueued' + runs-on: [self-hosted, gpu-ci] + steps: + - uses: actions/checkout@v4 + with: + repository: lurk-lab/ci-workflows + - uses: ./.github/actions/gpu-setup + with: + gpu-framework: 'cuda' + - uses: ./.github/actions/ci-env + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: dtolnay/rust-toolchain@stable + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + - name: CUDA tests + run: | + cargo nextest run --profile ci --cargo-profile dev-ci --features cuda + + opencl: + name: Rust tests on OpenCL + if: github.event_name != 'pull_request' || github.event.action == 'enqueued' + runs-on: [self-hosted, gpu-ci] + steps: + - uses: actions/checkout@v4 + with: + repository: lurk-lab/ci-workflows + - uses: ./.github/actions/gpu-setup + with: + gpu-framework: 'opencl' + - uses: ./.github/actions/ci-env + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: dtolnay/rust-toolchain@stable + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + - name: OpenCL tests + run: | + cargo nextest run --profile ci --cargo-profile dev-ci --features cuda,opencl \ No newline at end of file