This repository has been archived by the owner on Jun 24, 2024. It is now read-only.
Add CI for cuda builds #772
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Rust | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
strategy: | |
# Don't stop building if it fails on an OS | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check | |
run: cargo check --verbose | |
- name: Build | |
run: cargo build --verbose | |
- name: Run tests | |
run: cargo test --all --verbose | |
fmt: | |
name: Clippy, formatting and docs | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- name: Formatting | |
run: cargo fmt --all -- --check | |
- name: Clippy | |
run: cargo clippy --workspace -- -Dclippy::all | |
- name: Documentation | |
env: | |
RUSTDOCFLAGS: -Dwarnings | |
run: cargo doc --workspace --exclude llm-cli | |
metal: | |
name: Build with metal support | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check | |
run: cargo check --verbose | |
- name: Build | |
run: cargo build --verbose --features metal | |
cuda: | |
name: Build with cuda support | |
strategy: | |
# Don't stop building if it fails on an OS | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: Jimver/[email protected] | |
name: Install CUDA toolkit on Linux | |
if: matrix.os == 'ubuntu-latest' | |
id: cuda-toolkit-linux | |
with: | |
cuda: '12.2.0' | |
method: 'network' | |
#See e.g. https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ | |
non-cuda-sub-packages: '["libcublas","libcublas-dev"]' | |
sub-packages: '["nvcc","compiler","libraries","libraries-dev","cudart","cudart-dev"]' | |
- uses: Jimver/[email protected] | |
name: Install CUDA toolkit on Windows | |
if: matrix.os == 'windows-latest' | |
id: cuda-toolkit-windows | |
with: | |
cuda: '12.2.0' | |
#See https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#install-the-cuda-software | |
method: 'local' | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check | |
run: cargo check --verbose | |
- name: Build | |
run: cargo build --verbose --features cublas | |
opencl: | |
name: Build with opencl support | |
strategy: | |
# Don't stop building if it fails on an OS | |
fail-fast: false | |
matrix: | |
# TODO Add windows opencl build | |
os: [ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install clblast | |
if: matrix.os == 'ubuntu-latest' | |
run: sudo apt install libclblast-dev | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check | |
run: cargo check --verbose | |
- name: Build | |
run: cargo build --verbose --features clblast |