This repository has been archived by the owner on Jun 24, 2024. It is now read-only.
Merge pull request #395 from LLukas22/feat/gpu-support #874
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: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.65.0 | |
override: true | |
- 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: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
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: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.65.0 | |
override: true | |
- 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: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.65.0 | |
override: true | |
- 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: | |
os: [windows-latest, ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install CLBlast on linux | |
if: matrix.os == 'ubuntu-latest' | |
run: sudo apt install libclblast-dev | |
- name: Install vcpkg on windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
git clone https://github.com/microsoft/vcpkg.git | |
cd vcpkg | |
./bootstrap-vcpkg.sh | |
ls -la | |
shell: bash | |
- name: Install OpenCL on windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
${{ github.workspace }}\vcpkg\vcpkg.exe install opencl:x64-windows | |
shell: pwsh | |
- name: Install CLBlast on windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
${{ github.workspace }}\vcpkg\vcpkg.exe install clblast:x64-windows | |
shell: pwsh | |
- name: Set Windows Environment Variables | |
if: matrix.os == 'windows-latest' | |
run: | | |
echo "CLBLAST_PATH=${{ github.workspace }}/vcpkg/packages/clblast_x64-windows" >> $GITHUB_ENV | |
echo "OPENCL_PATH=${{ github.workspace }}/vcpkg/packages/opencl_x64-windows" >> $GITHUB_ENV | |
echo "${{ github.workspace }}/vcpkg/packages/clblast_x64-windows/bin" >> $GITHUB_PATH | |
echo "${{ github.workspace }}/vcpkg/packages/opencl_x64-windows/bin" >> $GITHUB_PATH | |
shell: bash | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.65.0 | |
override: true | |
- name: Check | |
run: cargo check --verbose | |
- name: Build with OpenCL on Windows | |
if: matrix.os == 'windows-latest' | |
run: cargo build --verbose --features clblast | |
env: | |
RUSTFLAGS: "-Ctarget-feature=+crt-static" | |
- name: Build with OpenCL on Linux | |
if: matrix.os == 'ubuntu-latest' | |
run: cargo build --verbose --features clblast |