Jimver / cuda-toolkit

GitHub Action to install CUDA
MIT License
155 stars 57 forks source link
action cuda cuda-toolkit github-actions nvidia nvidia-cuda

cuda-toolkit

This action installs the NVIDIA® CUDA® Toolkit on the system. It adds the cuda install location as CUDA_PATH to GITHUB_ENV so you can access the CUDA install location in subsequent steps. CUDA_PATH/bin is added to GITHUB_PATH so you can use commands such as nvcc directly in subsequent steps. Right now both windows-2019 and ubuntu-20.04 runners have been tested to work successfully.

Inputs

cuda

Optional The CUDA version to install. View src/link/windows-links.ts and src/link/linux-links.ts for available versions.

Default: '12.6.1'.

sub-packages

NOTE: On Linux this only works with the 'network' method view details

Optional If set, only the specified CUDA subpackages will be installed. Only installs specified subpackages, must be in the form of a JSON array. For example, if you only want to install nvcc and visual studio integration: '["nvcc", "visual_studio_integration"]' (double quotes required)

Default: '[]'.

non-cuda-sub-packages

NOTE: This only works on Linux with the 'network' method view details

Optional If set, only the specified CUDA subpackages will be installed without prepending the "cuda-" prefix. Only installs specified subpackages without prepending the "cuda-" prefix, must be in the form of a JSON array. For example, if you only want to install libcublas and libcufft: '["libcublas", "libcufft"]' (double quotes required)

Default: '[]'.

method

Optional Installation method, can be either 'local' or 'network'.

Default: 'local'.

linux-local-args

Optional (For Linux and 'local' method only) override arguments for the Linux .run installer. For example if you don't want samples use '["--toolkit"]' (double quotes required) See the Nvidia Docs for available options. Note that the --silent option is already always added by the action itself.

Default: '["--toolkit", "--samples"]'.

log-file-suffix

Required with matrix builds

Add suffix to the log file name which gets uploaded as an artifact. This has to be set when running a matrix build. The log file already contains the OS type (Linux/Windows) and install method (local/network) but it is not aware of other matrix variables, so add those here.

For example if you use multiple linux distros:

jobs:
  CI:
    strategy:
      matrix:
        os: [ubuntu-22.04, ubuntu-20.04]
    runs-on: ${{ matrix.os }}
    steps:
    - uses: Jimver/cuda-toolkit@master
      id: cuda-toolkit
      with:
        log-file-suffix: '${{matrix.os}}.txt'

Default: 'log.txt'

Outputs

cuda

The cuda version installed (same as cuda from input).

CUDA_PATH

The path where cuda is installed (same as CUDA_PATH in GITHUB_ENV).

Example usage

steps:
- uses: Jimver/cuda-toolkit@v0.2.19
  id: cuda-toolkit
  with:
    cuda: '12.5.0'

- run: echo "Installed cuda version is: ${{steps.cuda-toolkit.outputs.cuda}}"

- run: echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"

- run: nvcc -V