diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index b5f947fd..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,83 +0,0 @@ -version: 2.1 - -executors: - linux: - docker: - - image: cimg/rust:1.70 - resource_class: small - -jobs: - test: - # The tests need CUDA, hence use a different docker image. - docker: - - image: nvidia/cuda:12.0.1-devel-ubuntu22.04 - resource_class: small - environment: - RUST_LOG: trace - # Build the kernel only for the single architecture . This should reduce - # the overall compile-time significantly. - EC_GPU_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 - BELLMAN_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 - NEPTUNE_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 - steps: - - checkout - - run: - name: Install requirements - command: | - apt update - apt install ocl-icd-opencl-dev curl --yes - - run: - name: Install Rust - command: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain $(cat rust-toolchain) -y - - run: - # For some reason `source ~/.cargo.env` does not work. - name: Setup environment - command: | - echo 'export PATH="~/.cargo/bin:${PATH}"' | tee --append ${BASH_ENV} - echo 'export LD_LIBRARY_PATH=/usr/local/cuda/compat' | tee --append ${BASH_ENV} - source ${BASH_ENV} - # Run clippy as apart of the test job as it also needs the nvidia toolkit - # in order to compile - - run: - name: Run cargo clippy - command: cargo clippy --workspace -- -D warnings - - run: - name: Test - command: cargo test --verbose - - rustfmt: - executor: linux - steps: - - checkout - - run: - name: Run cargo fmt - command: cargo fmt --all -- --check - - test_darwin: - macos: - xcode: "13.4.1" - resource_class: macos.m1.medium.gen1 - environment: - RUST_LOG: trace - steps: - - checkout - - run: - name: Install other dependencies with Homebrew - command: HOMEBREW_NO_AUTO_UPDATE=1 brew install hwloc rustup-init - - run: - name: Install Rust - command: | - rustup-init --profile minimal --default-toolchain $(cat rust-toolchain) -y - source ${HOME}/.cargo/env - - run: - name: Test (Darwin) - # CUDA isn't support on MacOS, hence only enable OpenCL. - command: cargo test --release --verbose --no-default-features --features opencl - -workflows: - version: 2.1 - test_all: - jobs: - - rustfmt - - test - - test_darwin diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..1707cc21 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,63 @@ +name: CI + +on: [pull_request, push] + +# Cancel a job if there's a new on on the same branch started. +# Based on https://stackoverflow.com/questions/58895283/stop-already-running-workflow-job-in-github-actions/67223051#67223051 +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +env: + CARGO_INCREMENTAL: 0 + RUST_BACKTRACE: 1 + # Faster crates.io index checkout. + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + RUST_LOG: debug + # Build the kernel only for the single architecture . This should reduce + # the overall compile-time significantly. + EC_GPU_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 + BELLMAN_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 + NEPTUNE_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 + +jobs: + check_clippy: + runs-on: ubuntu-24.04 + name: Clippy + steps: + - uses: actions/checkout@v4 + - name: Install required packages + run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev + - name: Run cargo clippy + run: cargo clippy --all-targets --workspace -- -D warnings + + check_fmt: + runs-on: ubuntu-24.04 + name: Checking fmt + steps: + - uses: actions/checkout@v4 + - name: Run cargo fmt + run: cargo fmt --all -- --check + + test: + runs-on: ubuntu-24.04 + name: Test + steps: + - uses: actions/checkout@v4 + - name: Install required packages + run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev + # In case no GPUs are available, it's using the CPU fallback. + - name: Test + run: cargo test --verbose + + test_macos: + runs-on: macos-latest + name: Test in release mode on MacOS + steps: + - uses: actions/checkout@v4 + - name: Install required packages + run: HOMEBREW_NO_AUTO_UPDATE=1 brew install hwloc + + - name: Run usual tests in release profile + # CUDA isn't support on MacOS, hence only enable OpenCL. + run: cargo test --verbose --release --no-default-features -- --nocapture