@@ -120,7 +120,7 @@ jobs:
120
120
make
121
121
122
122
macOS-latest-cmake :
123
- runs-on : macOS -latest
123
+ runs-on : macos -latest
124
124
125
125
steps :
126
126
- name : Clone
@@ -148,29 +148,86 @@ jobs:
148
148
149
149
windows-latest-cmake :
150
150
runs-on : windows-latest
151
+ env :
152
+ OPENBLAS_VERSION : 0.3.23
153
+ OPENCL_VERSION : 2023.04.17
154
+ CLBLAST_VERSION : 1.5.3
151
155
152
156
strategy :
153
157
matrix :
154
158
include :
155
- - build : ' avx2'
156
- defines : ' '
157
- - build : ' avx'
158
- defines : ' -DLLAMA_AVX2=OFF'
159
- - build : ' avx512'
160
- defines : ' -DLLAMA_AVX512=ON -DBUILD_SHARED_LIBS=ON'
159
+ - build : ' avx2'
160
+ defines : ' '
161
+ - build : ' avx'
162
+ defines : ' -DLLAMA_AVX2=OFF'
163
+ - build : ' avx512'
164
+ defines : ' -DLLAMA_AVX512=ON -DBUILD_SHARED_LIBS=ON'
165
+ - build : ' clblast'
166
+ defines : ' -DLLAMA_CLBLAST=ON -DCMAKE_PREFIX_PATH="$env:RUNNER_TEMP/clblast"'
167
+ - build : ' openblas'
168
+ defines : ' -DLLAMA_OPENBLAS=ON -DBLAS_LIBRARIES="/LIBPATH:$env:RUNNER_TEMP/openblas/lib" -DOPENBLAS_INC="$env:RUNNER_TEMP/openblas/include"'
161
169
162
170
steps :
163
171
- name : Clone
164
172
id : checkout
165
173
uses : actions/checkout@v1
166
174
175
+ - name : Download OpenCL SDK
176
+ id : get_opencl
177
+ if : ${{ matrix.build == 'clblast' }}
178
+ run : |
179
+ curl.exe -o $env:RUNNER_TEMP/opencl.zip -L "https://github.com/KhronosGroup/OpenCL-SDK/releases/download/v${env:OPENCL_VERSION}/OpenCL-SDK-v${env:OPENCL_VERSION}-Win-x64.zip"
180
+ mkdir $env:RUNNER_TEMP/opencl
181
+ tar.exe -xvf $env:RUNNER_TEMP/opencl.zip --strip-components=1 -C $env:RUNNER_TEMP/opencl
182
+
183
+ - name : Download CLBlast
184
+ id : get_clblast
185
+ if : ${{ matrix.build == 'clblast' }}
186
+ run : |
187
+ curl.exe -o $env:RUNNER_TEMP/clblast.zip -L "https://github.com/CNugteren/CLBlast/releases/download/${env:CLBLAST_VERSION}/CLBlast-${env:CLBLAST_VERSION}-Windows-x64.zip"
188
+ curl.exe -o $env:RUNNER_TEMP/CLBlast.LICENSE.txt -L "https://github.com/CNugteren/CLBlast/raw/${env:CLBLAST_VERSION}/LICENSE"
189
+ mkdir $env:RUNNER_TEMP/clblast
190
+ tar.exe -xvf $env:RUNNER_TEMP/clblast.zip -C $env:RUNNER_TEMP/clblast
191
+ foreach ($f in (gci -Recurse -Path "$env:RUNNER_TEMP/clblast" -Filter '*.cmake')) {
192
+ $txt = Get-Content -Path $f -Raw
193
+ $txt.Replace('C:/dependencies/opencl/', "$($env:RUNNER_TEMP.Replace('\','/'))/opencl/") | Set-Content -Path $f -Encoding UTF8
194
+ }
195
+
196
+ - name : Download OpenBLAS
197
+ id : get_openblas
198
+ if : ${{ matrix.build == 'openblas' }}
199
+ run : |
200
+ curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
201
+ curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
202
+ mkdir $env:RUNNER_TEMP/openblas
203
+ tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
204
+ $vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
205
+ $msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
206
+ $lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
207
+ & $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
208
+
167
209
- name : Build
168
210
id : cmake_build
169
211
run : |
170
212
mkdir build
171
213
cd build
172
214
cmake .. ${{ matrix.defines }}
173
215
cmake --build . --config Release
216
+ cp ../LICENSE ./bin/Release/llama.cpp.txt
217
+
218
+ - name : Add clblast.dll
219
+ id : add_clblast_dll
220
+ if : ${{ matrix.build == 'clblast' }}
221
+ run : |
222
+ cp $env:RUNNER_TEMP/clblast/lib/clblast.dll ./build/bin/Release
223
+ cp $env:RUNNER_TEMP/CLBlast.LICENSE.txt ./build/bin/Release/CLBlast-${env:CLBLAST_VERSION}.txt
224
+
225
+ - name : Add libopenblas.dll
226
+ id : add_libopenblas_dll
227
+ if : ${{ matrix.build == 'openblas' }}
228
+ run : |
229
+ cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/bin/Release/openblas.dll
230
+ cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
174
231
175
232
- name : Check AVX512F support
176
233
id : check_avx512f
@@ -187,7 +244,7 @@ jobs:
187
244
188
245
- name : Test
189
246
id : cmake_test
190
- if : ${{ matrix.build != 'avx512' || env.HAS_AVX512F == '1' }} # Test AVX-512 only when possible
247
+ if : ${{ matrix.build != 'clblast' && (matrix.build != ' avx512' || env.HAS_AVX512F == '1') }} # Test AVX-512 only when possible
191
248
run : |
192
249
cd build
193
250
ctest -C Release --verbose
@@ -210,6 +267,82 @@ jobs:
210
267
path : |
211
268
llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-${{ matrix.build }}-x64.zip
212
269
270
+ windows-latest-cmake-cublas :
271
+ runs-on : windows-latest
272
+
273
+ strategy :
274
+ matrix :
275
+ cuda : ['12.1.0', '11.7.1']
276
+ build : ['cublas']
277
+
278
+ steps :
279
+ - name : Clone
280
+ id : checkout
281
+ uses : actions/checkout@v1
282
+
283
+
284
+ id : cuda-toolkit
285
+ with :
286
+ cuda : ${{ matrix.cuda }}
287
+ # TODO(green-sky): _dev seems to fail, and non dev are not enought
288
+ # sub-packages: '["nvcc", "cudart", "cublas", "cudart_dev", "cublas_dev"]'
289
+
290
+ - name : Build
291
+ id : cmake_build
292
+ run : |
293
+ mkdir build
294
+ cd build
295
+ cmake .. -DLLAMA_CUBLAS=ON
296
+ cmake --build . --config Release
297
+
298
+ - name : Get commit hash
299
+ id : commit
300
+ if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
301
+ uses : pr-mpt/actions-commit-hash@v2
302
+
303
+ - name : Pack artifacts
304
+ id : pack_artifacts
305
+ if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
306
+ run : |
307
+ 7z a llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip .\build\bin\Release\*
308
+
309
+ - name : Upload artifacts
310
+ if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
311
+ uses : actions/upload-artifact@v3
312
+ with :
313
+ path : |
314
+ llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip
315
+
316
+ - name : Copy and pack Cuda runtime
317
+ if : ${{ matrix.cuda == '12.1.0' }}
318
+ # TODO(green-sky): paths are cuda 12 specific
319
+ run : |
320
+ echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
321
+ mkdir '.\build\bin\cudart\'
322
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cudart64_12.dll" '.\build\bin\cudart\'
323
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cublas64_12.dll" '.\build\bin\cudart\'
324
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cublasLt64_12.dll" '.\build\bin\cudart\'
325
+ 7z a cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip .\build\bin\cudart\*
326
+
327
+ - name : Copy and pack Cuda runtime
328
+ if : ${{ matrix.cuda == '11.7.1' }}
329
+ # TODO(green-sky): paths are cuda 11 specific
330
+ run : |
331
+ echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
332
+ mkdir '.\build\bin\cudart\'
333
+ ls "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin"
334
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cudart64_110.dll" '.\build\bin\cudart\'
335
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cublas64_11.dll" '.\build\bin\cudart\'
336
+ cp "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin\cublasLt64_11.dll" '.\build\bin\cudart\'
337
+ 7z a cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip .\build\bin\cudart\*
338
+
339
+ - name : Upload Cuda runtime
340
+ if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
341
+ uses : actions/upload-artifact@v3
342
+ with :
343
+ path : |
344
+ cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip
345
+
213
346
release :
214
347
if : ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
215
348
@@ -221,6 +354,7 @@ jobs:
221
354
- macOS-latest-make
222
355
- macOS-latest-cmake
223
356
- windows-latest-cmake
357
+ - windows-latest-cmake-cublas
224
358
225
359
steps :
226
360
- name : Download artifacts
0 commit comments