|
@@ -1,4 +1,4 @@
|
|
|
-name: Create Release
|
|
|
|
|
|
|
+name: Release
|
|
|
|
|
|
|
|
on:
|
|
on:
|
|
|
workflow_dispatch: # allows manual triggering
|
|
workflow_dispatch: # allows manual triggering
|
|
@@ -227,6 +227,66 @@ jobs:
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip
|
|
|
name: llama-bin-ubuntu-vulkan-x64.zip
|
|
name: llama-bin-ubuntu-vulkan-x64.zip
|
|
|
|
|
|
|
|
|
|
+ windows-cpu:
|
|
|
|
|
+ runs-on: windows-latest
|
|
|
|
|
+
|
|
|
|
|
+ strategy:
|
|
|
|
|
+ matrix:
|
|
|
|
|
+ include:
|
|
|
|
|
+ - arch: 'x64'
|
|
|
|
|
+ - arch: 'arm64'
|
|
|
|
|
+
|
|
|
|
|
+ steps:
|
|
|
|
|
+ - name: Clone
|
|
|
|
|
+ uses: actions/checkout@v4
|
|
|
|
|
+ with:
|
|
|
|
|
+ fetch-depth: 0
|
|
|
|
|
+
|
|
|
|
|
+ - name: ccache
|
|
|
|
|
+ uses: hendrikmuhs/ccache-action@v1.2.16
|
|
|
|
|
+ with:
|
|
|
|
|
+ key: windows-latest-cmake-cpu-${{ matrix.arch }}
|
|
|
|
|
+ variant: ccache
|
|
|
|
|
+ evict-old-files: 1d
|
|
|
|
|
+
|
|
|
|
|
+ - name: Install Ninja
|
|
|
|
|
+ run: |
|
|
|
|
|
+ choco install ninja
|
|
|
|
|
+
|
|
|
|
|
+ - name: libCURL
|
|
|
|
|
+ id: get_libcurl
|
|
|
|
|
+ uses: ./.github/actions/windows-setup-curl
|
|
|
|
|
+ with:
|
|
|
|
|
+ architecture: ${{ matrix.arch == 'x64' && 'win64' || 'win64a' }}
|
|
|
|
|
+
|
|
|
|
|
+ - name: Build
|
|
|
|
|
+ env:
|
|
|
|
|
+ CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
+ run: |
|
|
|
|
|
+ cmake -S . -B build -G "Ninja Multi-Config" `
|
|
|
|
|
+ -D CMAKE_TOOLCHAIN_FILE=cmake/${{ matrix.arch }}-windows-llvm.cmake `
|
|
|
|
|
+ -DGGML_NATIVE=OFF `
|
|
|
|
|
+ -DGGML_BACKEND_DL=ON `
|
|
|
|
|
+ -DGGML_CPU_ALL_VARIANTS=ON `
|
|
|
|
|
+ -DGGML_OPENMP=OFF `
|
|
|
|
|
+ -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" `
|
|
|
|
|
+ ${{ env.CMAKE_ARGS }}
|
|
|
|
|
+ cmake --build build --config Release
|
|
|
|
|
+
|
|
|
|
|
+ - name: Pack artifacts
|
|
|
|
|
+ id: pack_artifacts
|
|
|
|
|
+ env:
|
|
|
|
|
+ CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
+ run: |
|
|
|
|
|
+ Copy-Item $env:CURL_PATH\bin\libcurl-${{ matrix.arch }}.dll .\build\bin\Release\
|
|
|
|
|
+ 7z a llama-bin-win-cpu-${{ matrix.arch }}.zip .\build\bin\Release\*
|
|
|
|
|
+
|
|
|
|
|
+ - name: Upload artifacts
|
|
|
|
|
+ uses: actions/upload-artifact@v4
|
|
|
|
|
+ with:
|
|
|
|
|
+ path: llama-bin-win-cpu-${{ matrix.arch }}.zip
|
|
|
|
|
+ name: llama-bin-win-cpu-${{ matrix.arch }}.zip
|
|
|
|
|
+
|
|
|
windows:
|
|
windows:
|
|
|
runs-on: windows-latest
|
|
runs-on: windows-latest
|
|
|
|
|
|
|
@@ -237,52 +297,30 @@ jobs:
|
|
|
strategy:
|
|
strategy:
|
|
|
matrix:
|
|
matrix:
|
|
|
include:
|
|
include:
|
|
|
- - build: 'cpu-x64'
|
|
|
|
|
|
|
+ - backend: 'vulkan'
|
|
|
arch: 'x64'
|
|
arch: 'x64'
|
|
|
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_OPENMP=OFF'
|
|
|
|
|
- #- build: 'openblas-x64'
|
|
|
|
|
- # arch: 'x64'
|
|
|
|
|
- # defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_OPENMP=OFF -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
|
|
|
|
|
- - build: 'vulkan-x64'
|
|
|
|
|
- arch: 'x64'
|
|
|
|
|
- defines: '-DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_VULKAN=ON'
|
|
|
|
|
- - build: 'cpu-arm64'
|
|
|
|
|
- arch: 'arm64'
|
|
|
|
|
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DGGML_NATIVE=OFF'
|
|
|
|
|
- - build: 'opencl-adreno-arm64'
|
|
|
|
|
|
|
+ defines: '-DGGML_VULKAN=ON'
|
|
|
|
|
+ target: 'ggml-vulkan'
|
|
|
|
|
+ - backend: 'opencl-adreno'
|
|
|
arch: 'arm64'
|
|
arch: 'arm64'
|
|
|
defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DCMAKE_PREFIX_PATH="$env:RUNNER_TEMP/opencl-arm64-release" -DGGML_OPENCL=ON -DGGML_OPENCL_USE_ADRENO_KERNELS=ON'
|
|
defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DCMAKE_PREFIX_PATH="$env:RUNNER_TEMP/opencl-arm64-release" -DGGML_OPENCL=ON -DGGML_OPENCL_USE_ADRENO_KERNELS=ON'
|
|
|
|
|
+ target: 'ggml-opencl'
|
|
|
|
|
|
|
|
steps:
|
|
steps:
|
|
|
- name: Clone
|
|
- name: Clone
|
|
|
id: checkout
|
|
id: checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- with:
|
|
|
|
|
- fetch-depth: 0
|
|
|
|
|
|
|
|
|
|
- name: ccache
|
|
- name: ccache
|
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
|
with:
|
|
with:
|
|
|
- key: windows-latest-cmake-${{ matrix.build }}
|
|
|
|
|
|
|
+ key: windows-latest-cmake-${{ matrix.backend }}-${{ matrix.arch }}
|
|
|
variant: ccache
|
|
variant: ccache
|
|
|
evict-old-files: 1d
|
|
evict-old-files: 1d
|
|
|
|
|
|
|
|
- - name: Download OpenBLAS
|
|
|
|
|
- id: get_openblas
|
|
|
|
|
- if: ${{ matrix.build == 'openblas-x64' }}
|
|
|
|
|
- run: |
|
|
|
|
|
- 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"
|
|
|
|
|
- curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
|
|
|
|
|
- mkdir $env:RUNNER_TEMP/openblas
|
|
|
|
|
- tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
|
|
|
|
|
- $vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
|
|
|
|
|
- $msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
|
|
|
|
|
- $lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
|
|
|
|
|
- & $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
|
|
|
|
|
-
|
|
|
|
|
- name: Install Vulkan SDK
|
|
- name: Install Vulkan SDK
|
|
|
id: get_vulkan
|
|
id: get_vulkan
|
|
|
- if: ${{ matrix.build == 'vulkan-x64' }}
|
|
|
|
|
|
|
+ if: ${{ matrix.backend == 'vulkan' }}
|
|
|
run: |
|
|
run: |
|
|
|
curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe"
|
|
curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe"
|
|
|
& "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install
|
|
& "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install
|
|
@@ -296,7 +334,7 @@ jobs:
|
|
|
|
|
|
|
|
- name: Install OpenCL Headers and Libs
|
|
- name: Install OpenCL Headers and Libs
|
|
|
id: install_opencl
|
|
id: install_opencl
|
|
|
- if: ${{ matrix.build == 'opencl-adreno-arm64' }}
|
|
|
|
|
|
|
+ if: ${{ matrix.backend == 'opencl-adreno' && matrix.arch == 'arm64' }}
|
|
|
run: |
|
|
run: |
|
|
|
git clone https://github.com/KhronosGroup/OpenCL-Headers
|
|
git clone https://github.com/KhronosGroup/OpenCL-Headers
|
|
|
cd OpenCL-Headers
|
|
cd OpenCL-Headers
|
|
@@ -314,46 +352,22 @@ jobs:
|
|
|
-DCMAKE_INSTALL_PREFIX="$env:RUNNER_TEMP/opencl-arm64-release"
|
|
-DCMAKE_INSTALL_PREFIX="$env:RUNNER_TEMP/opencl-arm64-release"
|
|
|
cmake --build build-arm64-release --target install --config release
|
|
cmake --build build-arm64-release --target install --config release
|
|
|
|
|
|
|
|
- - name: libCURL
|
|
|
|
|
- id: get_libcurl
|
|
|
|
|
- uses: ./.github/actions/windows-setup-curl
|
|
|
|
|
- with:
|
|
|
|
|
- architecture: ${{ matrix.arch == 'x64' && 'win64' || 'win64a' }}
|
|
|
|
|
-
|
|
|
|
|
- name: Build
|
|
- name: Build
|
|
|
id: cmake_build
|
|
id: cmake_build
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
- run: |
|
|
|
|
|
- cmake -S . -B build ${{ matrix.defines }} `
|
|
|
|
|
- -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" `
|
|
|
|
|
- ${{ env.CMAKE_ARGS }}
|
|
|
|
|
- cmake --build build --config Release -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
|
|
-
|
|
|
|
|
- - name: Add libopenblas.dll
|
|
|
|
|
- id: add_libopenblas_dll
|
|
|
|
|
- if: ${{ matrix.build == 'openblas-x64' }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
- cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/bin/Release/openblas.dll
|
|
|
|
|
- cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
|
|
|
|
|
-
|
|
|
|
|
- - name: Determine tag name
|
|
|
|
|
- id: tag
|
|
|
|
|
- uses: ./.github/actions/get-tag-name
|
|
|
|
|
|
|
+ cmake -S . -B build ${{ matrix.defines }} -DGGML_NATIVE=OFF -DGGML_CPU=OFF -DGGML_BACKEND_DL=ON -DLLAMA_CURL=OFF
|
|
|
|
|
+ cmake --build build --config Release --target ${{ matrix.target }}
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
- name: Pack artifacts
|
|
|
id: pack_artifacts
|
|
id: pack_artifacts
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
- Copy-Item $env:CURL_PATH\bin\libcurl-${{ matrix.arch }}.dll .\build\bin\Release\
|
|
|
|
|
- 7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip .\build\bin\Release\*
|
|
|
|
|
|
|
+ 7z a llama-bin-win-${{ matrix.backend }}-${{ matrix.arch }}.zip .\build\bin\Release\${{ matrix.target }}.dll
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
- name: Upload artifacts
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
- path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip
|
|
|
|
|
- name: llama-bin-win-${{ matrix.build }}.zip
|
|
|
|
|
|
|
+ path: llama-bin-win-${{ matrix.backend }}-${{ matrix.arch }}.zip
|
|
|
|
|
+ name: llama-bin-win-${{ matrix.backend }}-${{ matrix.arch }}.zip
|
|
|
|
|
|
|
|
windows-cuda:
|
|
windows-cuda:
|
|
|
runs-on: windows-2019
|
|
runs-on: windows-2019
|
|
@@ -366,8 +380,6 @@ jobs:
|
|
|
- name: Clone
|
|
- name: Clone
|
|
|
id: checkout
|
|
id: checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- with:
|
|
|
|
|
- fetch-depth: 0
|
|
|
|
|
|
|
|
|
|
- name: Install ccache
|
|
- name: Install ccache
|
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
@@ -386,45 +398,30 @@ jobs:
|
|
|
run: |
|
|
run: |
|
|
|
choco install ninja
|
|
choco install ninja
|
|
|
|
|
|
|
|
- - name: libCURL
|
|
|
|
|
- id: get_libcurl
|
|
|
|
|
- uses: ./.github/actions/windows-setup-curl
|
|
|
|
|
-
|
|
|
|
|
- name: Build
|
|
- name: Build
|
|
|
id: cmake_build
|
|
id: cmake_build
|
|
|
shell: cmd
|
|
shell: cmd
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
|
cmake -S . -B build -G "Ninja Multi-Config" ^
|
|
cmake -S . -B build -G "Ninja Multi-Config" ^
|
|
|
- -DGGML_NATIVE=OFF ^
|
|
|
|
|
-DGGML_BACKEND_DL=ON ^
|
|
-DGGML_BACKEND_DL=ON ^
|
|
|
- -DGGML_CPU_ALL_VARIANTS=ON ^
|
|
|
|
|
|
|
+ -DGGML_NATIVE=OFF ^
|
|
|
|
|
+ -DGGML_CPU=OFF ^
|
|
|
-DGGML_CUDA=ON ^
|
|
-DGGML_CUDA=ON ^
|
|
|
- -DCURL_LIBRARY="%CURL_PATH%/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="%CURL_PATH%/include" ^
|
|
|
|
|
- ${{ env.CMAKE_ARGS }}
|
|
|
|
|
|
|
+ -DLLAMA_CURL=OFF
|
|
|
set /A NINJA_JOBS=%NUMBER_OF_PROCESSORS%-1
|
|
set /A NINJA_JOBS=%NUMBER_OF_PROCESSORS%-1
|
|
|
- cmake --build build --config Release -j %NINJA_JOBS% -t ggml
|
|
|
|
|
- cmake --build build --config Release
|
|
|
|
|
-
|
|
|
|
|
- - name: Determine tag name
|
|
|
|
|
- id: tag
|
|
|
|
|
- uses: ./.github/actions/get-tag-name
|
|
|
|
|
|
|
+ cmake --build build --config Release -j %NINJA_JOBS% --target ggml-cuda
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
- name: Pack artifacts
|
|
|
id: pack_artifacts
|
|
id: pack_artifacts
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
- cp $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\Release\libcurl-x64.dll
|
|
|
|
|
- 7z a llama-${{ steps.tag.outputs.name }}-bin-win-cuda${{ matrix.cuda }}-x64.zip .\build\bin\Release\*
|
|
|
|
|
|
|
+ 7z a llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip .\build\bin\Release\ggml-cuda.dll
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
- name: Upload artifacts
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
- path: llama-${{ steps.tag.outputs.name }}-bin-win-cuda${{ matrix.cuda }}-x64.zip
|
|
|
|
|
- name: llama-bin-win-cuda${{ matrix.cuda }}-x64.zip
|
|
|
|
|
|
|
+ path: llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip
|
|
|
|
|
+ name: llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip
|
|
|
|
|
|
|
|
- name: Copy and pack Cuda runtime
|
|
- name: Copy and pack Cuda runtime
|
|
|
run: |
|
|
run: |
|
|
@@ -432,13 +429,13 @@ jobs:
|
|
|
$dst='.\build\bin\cudart\'
|
|
$dst='.\build\bin\cudart\'
|
|
|
robocopy "${{env.CUDA_PATH}}\bin" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
|
|
robocopy "${{env.CUDA_PATH}}\bin" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
|
|
|
robocopy "${{env.CUDA_PATH}}\lib" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
|
|
robocopy "${{env.CUDA_PATH}}\lib" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
|
|
|
- 7z a cudart-llama-bin-win-cuda${{ matrix.cuda }}-x64.zip $dst\*
|
|
|
|
|
|
|
+ 7z a cudart-llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip $dst\*
|
|
|
|
|
|
|
|
- name: Upload Cuda runtime
|
|
- name: Upload Cuda runtime
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
- path: cudart-llama-bin-win-cuda${{ matrix.cuda }}-x64.zip
|
|
|
|
|
- name: cudart-llama-bin-win-cuda${{ matrix.cuda }}-x64.zip
|
|
|
|
|
|
|
+ path: cudart-llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip
|
|
|
|
|
+ name: cudart-llama-bin-win-cuda-${{ matrix.cuda }}-x64.zip
|
|
|
|
|
|
|
|
windows-sycl:
|
|
windows-sycl:
|
|
|
runs-on: windows-latest
|
|
runs-on: windows-latest
|
|
@@ -455,8 +452,6 @@ jobs:
|
|
|
- name: Clone
|
|
- name: Clone
|
|
|
id: checkout
|
|
id: checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- with:
|
|
|
|
|
- fetch-depth: 0
|
|
|
|
|
|
|
|
|
|
- name: ccache
|
|
- name: ccache
|
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
@@ -469,15 +464,18 @@ jobs:
|
|
|
run: |
|
|
run: |
|
|
|
scripts/install-oneapi.bat $WINDOWS_BASEKIT_URL $WINDOWS_DPCPP_MKL
|
|
scripts/install-oneapi.bat $WINDOWS_BASEKIT_URL $WINDOWS_DPCPP_MKL
|
|
|
|
|
|
|
|
- # TODO: add libcurl support ; we will also need to modify win-build-sycl.bat to accept user-specified args
|
|
|
|
|
-
|
|
|
|
|
- name: Build
|
|
- name: Build
|
|
|
id: cmake_build
|
|
id: cmake_build
|
|
|
- run: examples/sycl/win-build-sycl.bat
|
|
|
|
|
-
|
|
|
|
|
- - name: Determine tag name
|
|
|
|
|
- id: tag
|
|
|
|
|
- uses: ./.github/actions/get-tag-name
|
|
|
|
|
|
|
+ shell: cmd
|
|
|
|
|
+ run: |
|
|
|
|
|
+ call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" intel64 --force
|
|
|
|
|
+ cmake -G "Ninja" -B build ^
|
|
|
|
|
+ -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=icx ^
|
|
|
|
|
+ -DCMAKE_BUILD_TYPE=Release ^
|
|
|
|
|
+ -DGGML_BACKEND_DL=ON -DBUILD_SHARED_LIBS=ON ^
|
|
|
|
|
+ -DGGML_CPU=OFF -DGGML_SYCL=ON ^
|
|
|
|
|
+ -DLLAMA_CURL=OFF
|
|
|
|
|
+ cmake --build build --target ggml-sycl -j
|
|
|
|
|
|
|
|
- name: Build the release package
|
|
- name: Build the release package
|
|
|
id: pack_artifacts
|
|
id: pack_artifacts
|
|
@@ -502,12 +500,12 @@ jobs:
|
|
|
cp "${{ env.ONEAPI_ROOT }}/tbb/latest/bin/tbb12.dll" ./build/bin
|
|
cp "${{ env.ONEAPI_ROOT }}/tbb/latest/bin/tbb12.dll" ./build/bin
|
|
|
|
|
|
|
|
echo "cp oneAPI running time dll files to ./build/bin done"
|
|
echo "cp oneAPI running time dll files to ./build/bin done"
|
|
|
- 7z a llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip ./build/bin/*
|
|
|
|
|
|
|
+ 7z a llama-bin-win-sycl-x64.zip ./build/bin/*
|
|
|
|
|
|
|
|
- name: Upload the release package
|
|
- name: Upload the release package
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
- path: llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip
|
|
|
|
|
|
|
+ path: llama-bin-win-sycl-x64.zip
|
|
|
name: llama-bin-win-sycl-x64.zip
|
|
name: llama-bin-win-sycl-x64.zip
|
|
|
|
|
|
|
|
windows-hip:
|
|
windows-hip:
|
|
@@ -521,8 +519,6 @@ jobs:
|
|
|
- name: Clone
|
|
- name: Clone
|
|
|
id: checkout
|
|
id: checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- with:
|
|
|
|
|
- fetch-depth: 0
|
|
|
|
|
|
|
|
|
|
- name: Clone rocWMMA repository
|
|
- name: Clone rocWMMA repository
|
|
|
id: clone_rocwmma
|
|
id: clone_rocwmma
|
|
@@ -532,7 +528,7 @@ jobs:
|
|
|
- name: ccache
|
|
- name: ccache
|
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
uses: hendrikmuhs/ccache-action@v1.2.16
|
|
|
with:
|
|
with:
|
|
|
- key: windows-latest-cmake-hip-release
|
|
|
|
|
|
|
+ key: windows-latest-cmake-hip-${{ matrix.gpu_target }}-x64
|
|
|
evict-old-files: 1d
|
|
evict-old-files: 1d
|
|
|
|
|
|
|
|
- name: Install
|
|
- name: Install
|
|
@@ -550,14 +546,8 @@ jobs:
|
|
|
run: |
|
|
run: |
|
|
|
& 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version
|
|
& 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version
|
|
|
|
|
|
|
|
- - name: libCURL
|
|
|
|
|
- id: get_libcurl
|
|
|
|
|
- uses: ./.github/actions/windows-setup-curl
|
|
|
|
|
-
|
|
|
|
|
- name: Build
|
|
- name: Build
|
|
|
id: cmake_build
|
|
id: cmake_build
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
$env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
|
|
$env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
|
|
|
$env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
|
|
$env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
|
|
@@ -569,31 +559,23 @@ jobs:
|
|
|
-DAMDGPU_TARGETS=${{ matrix.gpu_target }} `
|
|
-DAMDGPU_TARGETS=${{ matrix.gpu_target }} `
|
|
|
-DGGML_HIP_ROCWMMA_FATTN=ON `
|
|
-DGGML_HIP_ROCWMMA_FATTN=ON `
|
|
|
-DGGML_HIP=ON `
|
|
-DGGML_HIP=ON `
|
|
|
- -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" `
|
|
|
|
|
- ${{ env.CMAKE_ARGS }}
|
|
|
|
|
- cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
|
|
|
|
+ -DLLAMA_CURL=OFF
|
|
|
|
|
+ cmake --build build --target ggml-hip -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
md "build\bin\rocblas\library\"
|
|
md "build\bin\rocblas\library\"
|
|
|
cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\"
|
|
cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\"
|
|
|
cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\"
|
|
cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\"
|
|
|
cp "${env:HIP_PATH}\bin\rocblas\library\*" "build\bin\rocblas\library\"
|
|
cp "${env:HIP_PATH}\bin\rocblas\library\*" "build\bin\rocblas\library\"
|
|
|
|
|
|
|
|
- - name: Determine tag name
|
|
|
|
|
- id: tag
|
|
|
|
|
- uses: ./.github/actions/get-tag-name
|
|
|
|
|
-
|
|
|
|
|
- name: Pack artifacts
|
|
- name: Pack artifacts
|
|
|
id: pack_artifacts
|
|
id: pack_artifacts
|
|
|
- env:
|
|
|
|
|
- CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }}
|
|
|
|
|
run: |
|
|
run: |
|
|
|
- cp $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\libcurl-x64.dll
|
|
|
|
|
- 7z a llama-${{ steps.tag.outputs.name }}-bin-win-hip-x64-${{ matrix.gpu_target }}.zip .\build\bin\*
|
|
|
|
|
|
|
+ 7z a llama-bin-win-hip-${{ matrix.gpu_target }}-x64.zip .\build\bin\*
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
- name: Upload artifacts
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
- path: llama-${{ steps.tag.outputs.name }}-bin-win-hip-x64-${{ matrix.gpu_target }}.zip
|
|
|
|
|
- name: llama-bin-win-hip-x64-${{ matrix.gpu_target }}.zip
|
|
|
|
|
|
|
+ path: llama-bin-win-hip-${{ matrix.gpu_target }}-x64.zip
|
|
|
|
|
+ name: llama-bin-win-hip-${{ matrix.gpu_target }}-x64.zip
|
|
|
|
|
|
|
|
ios-xcode-build:
|
|
ios-xcode-build:
|
|
|
runs-on: macos-latest
|
|
runs-on: macos-latest
|
|
@@ -655,14 +637,16 @@ jobs:
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
needs:
|
|
needs:
|
|
|
- - ubuntu-22-cpu
|
|
|
|
|
- - ubuntu-22-vulkan
|
|
|
|
|
- windows
|
|
- windows
|
|
|
|
|
+ - windows-cpu
|
|
|
- windows-cuda
|
|
- windows-cuda
|
|
|
- windows-sycl
|
|
- windows-sycl
|
|
|
- windows-hip
|
|
- windows-hip
|
|
|
|
|
+ - ubuntu-22-cpu
|
|
|
|
|
+ - ubuntu-22-vulkan
|
|
|
- macOS-arm64
|
|
- macOS-arm64
|
|
|
- macOS-x64
|
|
- macOS-x64
|
|
|
|
|
+ - ios-xcode-build
|
|
|
|
|
|
|
|
steps:
|
|
steps:
|
|
|
- name: Clone
|
|
- name: Clone
|
|
@@ -680,10 +664,43 @@ jobs:
|
|
|
uses: actions/download-artifact@v4
|
|
uses: actions/download-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
path: ./artifact
|
|
path: ./artifact
|
|
|
|
|
+ merge-multiple: true
|
|
|
|
|
|
|
|
- name: Move artifacts
|
|
- name: Move artifacts
|
|
|
id: move_artifacts
|
|
id: move_artifacts
|
|
|
- run: mkdir -p ./artifact/release && mv ./artifact/*/*.zip ./artifact/release
|
|
|
|
|
|
|
+ run: |
|
|
|
|
|
+ mkdir -p release
|
|
|
|
|
+
|
|
|
|
|
+ echo "Adding CPU backend files to existing zips..."
|
|
|
|
|
+ for arch in x64 arm64; do
|
|
|
|
|
+ cpu_zip="artifact/llama-bin-win-cpu-${arch}.zip"
|
|
|
|
|
+ temp_dir=$(mktemp -d)
|
|
|
|
|
+ echo "Extracting CPU backend for $arch..."
|
|
|
|
|
+ unzip "$cpu_zip" -d "$temp_dir"
|
|
|
|
|
+
|
|
|
|
|
+ echo "Adding CPU files to $arch zips..."
|
|
|
|
|
+ for target_zip in artifact/llama-bin-win-*-${arch}.zip; do
|
|
|
|
|
+ if [[ "$target_zip" == "$cpu_zip" ]]; then
|
|
|
|
|
+ continue
|
|
|
|
|
+ fi
|
|
|
|
|
+ echo "Adding CPU backend to $(basename "$target_zip")"
|
|
|
|
|
+ realpath_target_zip=$(realpath "$target_zip")
|
|
|
|
|
+ (cd "$temp_dir" && zip -r "$realpath_target_zip" .)
|
|
|
|
|
+ done
|
|
|
|
|
+
|
|
|
|
|
+ rm -rf "$temp_dir"
|
|
|
|
|
+ done
|
|
|
|
|
+
|
|
|
|
|
+ echo "Renaming and moving zips to release..."
|
|
|
|
|
+ for zip_file in artifact/llama-bin-win-*.zip; do
|
|
|
|
|
+ base_name=$(basename "$zip_file" .zip)
|
|
|
|
|
+ zip_name="llama-${{ steps.tag.outputs.name }}-${base_name#llama-}.zip"
|
|
|
|
|
+ echo "Moving $zip_file to release/$zip_name"
|
|
|
|
|
+ mv "$zip_file" "release/$zip_name"
|
|
|
|
|
+ done
|
|
|
|
|
+
|
|
|
|
|
+ echo "Moving other artifacts..."
|
|
|
|
|
+ mv -v artifact/*.zip release
|
|
|
|
|
|
|
|
- name: Create release
|
|
- name: Create release
|
|
|
id: create_release
|
|
id: create_release
|
|
@@ -702,7 +719,7 @@ jobs:
|
|
|
const path = require('path');
|
|
const path = require('path');
|
|
|
const fs = require('fs');
|
|
const fs = require('fs');
|
|
|
const release_id = '${{ steps.create_release.outputs.id }}';
|
|
const release_id = '${{ steps.create_release.outputs.id }}';
|
|
|
- for (let file of await fs.readdirSync('./artifact/release')) {
|
|
|
|
|
|
|
+ for (let file of await fs.readdirSync('./release')) {
|
|
|
if (path.extname(file) === '.zip') {
|
|
if (path.extname(file) === '.zip') {
|
|
|
console.log('uploadReleaseAsset', file);
|
|
console.log('uploadReleaseAsset', file);
|
|
|
await github.repos.uploadReleaseAsset({
|
|
await github.repos.uploadReleaseAsset({
|
|
@@ -710,7 +727,7 @@ jobs:
|
|
|
repo: context.repo.repo,
|
|
repo: context.repo.repo,
|
|
|
release_id: release_id,
|
|
release_id: release_id,
|
|
|
name: file,
|
|
name: file,
|
|
|
- data: await fs.readFileSync(`./artifact/release/${file}`)
|
|
|
|
|
|
|
+ data: await fs.readFileSync(`./release/${file}`)
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|