@@ -100,9 +100,11 @@ jobs:
100100 run : |
101101 $cudaVersion = $env:CUDAVER
102102 if ($IsLinux) {
103- mamba install -y --override-channels -c "nvidia/label/cuda-$cudaVersion" -c conda-forge "cuda-toolkit=$cudaVersion" "cuda-nvcc_linux-64=$cudaVersion"
103+ # Keep nvcc, cudart, and headers on the same NVIDIA label so the
104+ # detected toolkit version matches the published wheel tag.
105+ mamba install -y --override-channels -c "nvidia/label/cuda-$cudaVersion" "cuda-toolkit=$cudaVersion" "cuda-nvcc_linux-64=$cudaVersion" cuda-cudart cuda-cudart-dev
104106 } else {
105- mamba install -y --override-channels -c "nvidia/label/cuda-$cudaVersion" -c conda-forge "cuda-toolkit=$cudaVersion"
107+ mamba install -y --override-channels -c "nvidia/label/cuda-$cudaVersion" "cuda-toolkit=$cudaVersion"
106108 }
107109 if ($LASTEXITCODE -ne 0) {
108110 exit $LASTEXITCODE
@@ -115,28 +117,25 @@ jobs:
115117 $env:CUDA_HOME = $env:CONDA_PREFIX
116118 $env:CUDA_TOOLKIT_ROOT_DIR = $env:CONDA_PREFIX
117119 $cudaHostCompilerArg = ''
120+ $env:CMAKE_ARGS = ''
118121 if ($IsLinux) {
119122 if (Test-Path '/usr/bin/g++-12') {
120123 $env:CC = '/usr/bin/gcc-12'
121124 $env:CXX = '/usr/bin/g++-12'
122125 $env:CUDAHOSTCXX = '/usr/bin/g++-12'
123126 $cudaHostCompilerArg = " -DCMAKE_CUDA_HOST_COMPILER=$env:CUDAHOSTCXX"
124127 }
125- $cudaTargetRoot = Join-Path $env:CONDA_PREFIX 'targets/x86_64-linux'
126- if (Test-Path (Join-Path $cudaTargetRoot 'include/cuda_runtime.h')) {
127- $env:CUDAToolkit_ROOT = $cudaTargetRoot
128- $env:CUDA_TOOLKIT_ROOT_DIR = $cudaTargetRoot
129- $env:CMAKE_ARGS = "-DCUDAToolkit_ROOT=$cudaTargetRoot -DCUDA_TOOLKIT_ROOT_DIR=$cudaTargetRoot$cudaHostCompilerArg"
130- $env:CPATH = "$cudaTargetRoot/include:$env:CPATH"
131- $env:CPLUS_INCLUDE_PATH = "$cudaTargetRoot/include:$env:CPLUS_INCLUDE_PATH"
132- $env:LIBRARY_PATH = "$cudaTargetRoot/lib:$env:LIBRARY_PATH"
133- $env:LD_LIBRARY_PATH = "$cudaTargetRoot/lib:$env:CONDA_PREFIX/lib:$env:LD_LIBRARY_PATH"
128+ if (Test-Path (Join-Path $env:CONDA_PREFIX 'include/cuda_runtime.h')) {
129+ $env:CUDAToolkit_ROOT = $env:CONDA_PREFIX
130+ $env:CUDA_TOOLKIT_ROOT_DIR = $env:CONDA_PREFIX
131+ $env:CMAKE_ARGS = "-DCUDAToolkit_ROOT=$env:CONDA_PREFIX -DCUDA_TOOLKIT_ROOT_DIR=$env:CONDA_PREFIX$cudaHostCompilerArg"
132+ $env:CPATH = "$env:CONDA_PREFIX/include:$env:CPATH"
133+ $env:CPLUS_INCLUDE_PATH = "$env:CONDA_PREFIX/include:$env:CPLUS_INCLUDE_PATH"
134+ $env:LIBRARY_PATH = "$env:CONDA_PREFIX/lib:$env:LIBRARY_PATH"
135+ $env:LD_LIBRARY_PATH = "$env:CONDA_PREFIX/lib:$env:LD_LIBRARY_PATH"
134136 } else {
135- $env:LD_LIBRARY_PATH = $env:CONDA_PREFIX + '/lib:' + $env:LD_LIBRARY_PATH
136137 $env:CMAKE_ARGS = $cudaHostCompilerArg.Trim()
137138 }
138- } else {
139- $env:CMAKE_ARGS = ''
140139 }
141140 $nvccPath = Join-Path $env:CONDA_PREFIX 'bin/nvcc'
142141 if (-not (Test-Path $nvccPath)) {
@@ -145,14 +144,16 @@ jobs:
145144 if (-not (Test-Path $nvccPath)) {
146145 throw 'Failed to find nvcc in the conda environment'
147146 }
147+ $env:CUDACXX = $nvccPath
148+ $env:PATH = "$(Split-Path $nvccPath):$env:PATH"
148149 $nvccVersion = ((& $nvccPath --version) | Select-String 'release ([0-9]+\.[0-9]+)').Matches[0].Groups[1].Value
149150 if (-not $nvccVersion) {
150151 throw 'Failed to detect the installed CUDA toolkit version'
151152 }
152153 $cudaTagVersion = $nvccVersion.Replace('.','')
153154 $env:VERBOSE = '1'
154- # Pin a portable architecture list instead of CMake's `all`, which now
155- # includes future targets the hosted-runner toolchains cannot assemble.
155+ # Keep a portable SM set, including sm_70, instead of CMake's `all`,
156+ # which now pulls in future targets the hosted-runner toolchains cannot assemble.
156157 $env:CMAKE_ARGS = "-DGGML_CUDA_FORCE_MMQ=ON -DGGML_CUDA=on -DCMAKE_CUDA_ARCHITECTURES=70;75;80;86;89;90 -DCMAKE_CUDA_FLAGS=--allow-unsupported-compiler $env:CMAKE_ARGS"
157158 # if ($env:AVXVER -eq 'AVX') {
158159 $env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DGGML_AVX2=off -DGGML_FMA=off -DGGML_F16C=off'
0 commit comments