Spaces:
Runtime error
Runtime error
name: Build Wheels (CUDA) | |
on: workflow_dispatch | |
permissions: | |
contents: write | |
jobs: | |
define_matrix: | |
name: Define Build Matrix | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
defaults: | |
run: | |
shell: pwsh | |
steps: | |
- name: Define Job Output | |
id: set-matrix | |
run: | | |
$matrix = @{ | |
'os' = @('ubuntu-20.04', 'windows-latest') | |
'pyver' = @("3.10", "3.11", "3.12") | |
'cuda' = @("12.1.1", "12.2.2", "12.3.2", "12.4.1") | |
'releasetag' = @("basic") | |
} | |
$matrixOut = ConvertTo-Json $matrix -Compress | |
Write-Output ('matrix=' + $matrixOut) >> $env:GITHUB_OUTPUT | |
build_wheels: | |
name: Build Wheel ${{ matrix.os }} ${{ matrix.pyver }} ${{ matrix.cuda }} ${{ matrix.releasetag == 'wheels' && 'AVX2' || matrix.releasetag }} | |
needs: define_matrix | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: ${{ fromJSON(needs.define_matrix.outputs.matrix) }} | |
defaults: | |
run: | |
shell: pwsh | |
env: | |
CUDAVER: ${{ matrix.cuda }} | |
AVXVER: ${{ matrix.releasetag }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.pyver }} | |
- name: Setup Mamba | |
uses: conda-incubator/[email protected] | |
with: | |
activate-environment: "build" | |
python-version: ${{ matrix.pyver }} | |
miniforge-variant: Mambaforge | |
miniforge-version: latest | |
use-mamba: true | |
add-pip-as-python-dependency: true | |
auto-activate-base: false | |
- name: VS Integration Cache | |
id: vs-integration-cache | |
if: runner.os == 'Windows' | |
uses: actions/[email protected] | |
with: | |
path: ./MSBuildExtensions | |
key: cuda-${{ matrix.cuda }}-vs-integration | |
- name: Get Visual Studio Integration | |
if: runner.os == 'Windows' && steps.vs-integration-cache.outputs.cache-hit != 'true' | |
run: | | |
if ($env:CUDAVER -eq '12.1.1') {$x = '12.1.0'} else {$x = $env:CUDAVER} | |
$links = (Invoke-RestMethod 'https://raw.githubusercontent.com/Jimver/cuda-toolkit/master/src/links/windows-links.ts').Trim().split().where({$_ -ne ''}) | |
for ($i=$q=0;$i -lt $links.count -and $q -lt 2;$i++) {if ($links[$i] -eq "'$x',") {$q++}} | |
Invoke-RestMethod $links[$i].Trim("'") -OutFile 'cudainstaller.zip' | |
& 'C:\Program Files\7-Zip\7z.exe' e cudainstaller.zip -oMSBuildExtensions -r *\MSBuildExtensions\* > $null | |
Remove-Item 'cudainstaller.zip' | |
- name: Install Visual Studio Integration | |
if: runner.os == 'Windows' | |
run: | | |
$y = (gi '.\MSBuildExtensions').fullname + '\*' | |
(gi 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\*\BuildCustomizations').fullname.foreach({cp $y $_}) | |
$cupath = 'CUDA_PATH_V' + $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','_') | |
echo "$cupath=$env:CONDA_PREFIX" >> $env:GITHUB_ENV | |
- name: Install Dependencies | |
env: | |
MAMBA_DOWNLOAD_FAILFAST: "0" | |
MAMBA_NO_LOW_SPEED_LIMIT: "1" | |
run: | | |
$cudaVersion = $env:CUDAVER | |
mamba install -y 'cuda' -c nvidia/label/cuda-$cudaVersion | |
python -m pip install build wheel | |
- name: Build Wheel | |
run: | | |
$cudaVersion = $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','') | |
$env:CUDA_PATH = $env:CONDA_PREFIX | |
$env:CUDA_HOME = $env:CONDA_PREFIX | |
$env:CUDA_TOOLKIT_ROOT_DIR = $env:CONDA_PREFIX | |
if ($IsLinux) { | |
$env:LD_LIBRARY_PATH = $env:CONDA_PREFIX + '/lib:' + $env:LD_LIBRARY_PATH | |
} | |
$env:VERBOSE = '1' | |
$env:CMAKE_ARGS = '-DLLAMA_CUBLAS=on -DCMAKE_CUDA_ARCHITECTURES=all' | |
$env:CMAKE_ARGS = "-DLLAMA_CUDA_FORCE_MMQ=ON $env:CMAKE_ARGS" | |
if ($env:AVXVER -eq 'AVX') { | |
$env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DLLAMA_AVX2=off -DLLAMA_FMA=off -DLLAMA_F16C=off' | |
} | |
if ($env:AVXVER -eq 'AVX512') { | |
$env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DLLAMA_AVX512=on' | |
} | |
if ($env:AVXVER -eq 'basic') { | |
$env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DLLAMA_AVX=off -DLLAMA_AVX2=off -DLLAMA_FMA=off -DLLAMA_F16C=off' | |
} | |
python -m build --wheel | |
# write the build tag to the output | |
Write-Output "CUDA_VERSION=$cudaVersion" >> $env:GITHUB_ENV | |
- uses: softprops/action-gh-release@v2 | |
with: | |
files: dist/* | |
# Set tag_name to <tag>-cu<cuda_version> | |
tag_name: ${{ github.ref_name }}-cu${{ env.CUDA_VERSION }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |