mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	ci : move release workflow to a separate file (#13362)
This commit is contained in:
		
							
								
								
									
										22
									
								
								.github/actions/get-tag-name/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/actions/get-tag-name/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | name: "Determine tag name" | ||||||
|  | description: "Determine the tag name to use for a release" | ||||||
|  | outputs: | ||||||
|  |   name: | ||||||
|  |     description: "The name of the tag" | ||||||
|  |     value: ${{ steps.tag.outputs.name }} | ||||||
|  |  | ||||||
|  | runs: | ||||||
|  |   using: "composite" | ||||||
|  |   steps: | ||||||
|  |     - name: Determine tag name | ||||||
|  |       id: tag | ||||||
|  |       shell: bash | ||||||
|  |       run: | | ||||||
|  |         BUILD_NUMBER="$(git rev-list --count HEAD)" | ||||||
|  |         SHORT_HASH="$(git rev-parse --short=7 HEAD)" | ||||||
|  |         if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then | ||||||
|  |           echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT | ||||||
|  |         else | ||||||
|  |           SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') | ||||||
|  |           echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT | ||||||
|  |         fi | ||||||
							
								
								
									
										67
									
								
								.github/actions/windows-setup-cuda/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								.github/actions/windows-setup-cuda/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | name: "Windows - Setup CUDA Toolkit" | ||||||
|  | description: "Setup CUDA Toolkit for Windows" | ||||||
|  | inputs: | ||||||
|  |   cuda_version: | ||||||
|  |     description: "CUDA toolkit version" | ||||||
|  |     required: true | ||||||
|  |  | ||||||
|  | runs: | ||||||
|  |   using: "composite" | ||||||
|  |   steps: | ||||||
|  |     - name: Install Cuda Toolkit 11.7 | ||||||
|  |       if: ${{ inputs.cuda_version == '11.7' }} | ||||||
|  |       shell: pwsh | ||||||
|  |       run: | | ||||||
|  |           mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | ||||||
|  |           choco install unzip -y | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.7.99-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.7.99-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.7.99-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-11.7.4.6-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.7.91-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.7.91-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.7.101-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.7.91-archive.zip" | ||||||
|  |           unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_cudart-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvcc-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvrtc-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libcublas-windows-x86_64-11.7.4.6-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvtx-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\visual_studio_integration-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvprof-windows-x86_64-11.7.101-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_cccl-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y | ||||||
|  |           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||||
|  |           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||||
|  |           echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||||||
|  |           echo "CUDA_PATH_V11_7=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||||||
|  |  | ||||||
|  |     - name: Install Cuda Toolkit 12.4 | ||||||
|  |       if: ${{ inputs.cuda_version == '12.4' }} | ||||||
|  |       shell: pwsh | ||||||
|  |       run: | | ||||||
|  |           mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | ||||||
|  |           choco install unzip -y | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-12.4.131-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-12.4.5.8-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-12.4.127-archive.zip" | ||||||
|  |           unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_cudart-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvcc-windows-x86_64-12.4.131-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvrtc-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libcublas-windows-x86_64-12.4.5.8-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvtx-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_profiler_api-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\visual_studio_integration-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvprof-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_cccl-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y | ||||||
|  |           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||||
|  |           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||||
|  |           echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||||||
|  |           echo "CUDA_PATH_V12_4=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||||||
							
								
								
									
										719
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										719
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -2,28 +2,18 @@ name: CI | |||||||
|  |  | ||||||
| on: | on: | ||||||
|   workflow_dispatch: # allows manual triggering |   workflow_dispatch: # allows manual triggering | ||||||
|     inputs: |  | ||||||
|       create_release: |  | ||||||
|         description: 'Create new release' |  | ||||||
|         required: true |  | ||||||
|         type: boolean |  | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - master | ||||||
|     paths: ['.github/workflows/build.yml', '.github/workflows/build-linux-cross.yml', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp'] |     paths: ['.github/workflows/build.yml', '.github/workflows/build-linux-cross.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp'] | ||||||
|   pull_request: |   pull_request: | ||||||
|     types: [opened, synchronize, reopened] |     types: [opened, synchronize, reopened] | ||||||
|     paths: ['.github/workflows/build.yml', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp'] |     paths: ['.github/workflows/build.yml', '.github/workflows/build-linux-cross.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp'] | ||||||
|  |  | ||||||
| concurrency: | concurrency: | ||||||
|   group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} |   group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | ||||||
|   cancel-in-progress: true |   cancel-in-progress: true | ||||||
|  |  | ||||||
| # Fine-grant permission |  | ||||||
| # https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token |  | ||||||
| permissions: |  | ||||||
|   contents: write # for creating release |  | ||||||
|  |  | ||||||
| env: | env: | ||||||
|   BRANCH_NAME: ${{ github.head_ref || github.ref_name }} |   BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | ||||||
|   GGML_NLOOP: 3 |   GGML_NLOOP: 3 | ||||||
| @@ -40,8 +30,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 | ||||||
| @@ -74,33 +62,6 @@ jobs: | |||||||
|           cd build |           cd build | ||||||
|           ctest -L 'main|curl' --verbose --timeout 900 |           ctest -L 'main|curl' --verbose --timeout 900 | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           cp LICENSE ./build/bin/ |  | ||||||
|           zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip ./build/bin/* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip |  | ||||||
|           name: llama-bin-macos-arm64.zip |  | ||||||
|  |  | ||||||
|   macOS-latest-cmake-x64: |   macOS-latest-cmake-x64: | ||||||
|     runs-on: macos-13 |     runs-on: macos-13 | ||||||
|  |  | ||||||
| @@ -108,8 +69,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 | ||||||
| @@ -143,33 +102,6 @@ jobs: | |||||||
|           cd build |           cd build | ||||||
|           ctest -L main --verbose --timeout 900 |           ctest -L main --verbose --timeout 900 | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           cp LICENSE ./build/bin/ |  | ||||||
|           zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip ./build/bin/* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip |  | ||||||
|           name: llama-bin-macos-x64.zip |  | ||||||
|  |  | ||||||
|   ubuntu-cpu-cmake: |   ubuntu-cpu-cmake: | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
| @@ -185,8 +117,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 | ||||||
| @@ -225,33 +155,6 @@ jobs: | |||||||
|           ./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf |           ./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf | ||||||
|           ./bin/llama-cli -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256 |           ./bin/llama-cli -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256 | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           cp LICENSE ./build/bin/ |  | ||||||
|           zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-${{ matrix.build }}.zip ./build/bin/* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-${{ matrix.build }}.zip |  | ||||||
|           name: llama-bin-ubuntu-${{ matrix.build }}.zip |  | ||||||
|  |  | ||||||
|   ubuntu-latest-cmake-sanitizer: |   ubuntu-latest-cmake-sanitizer: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
| @@ -378,8 +281,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 | ||||||
| @@ -409,33 +310,6 @@ jobs: | |||||||
|           # This is using llvmpipe and runs slower than other backends |           # This is using llvmpipe and runs slower than other backends | ||||||
|           ctest -L main --verbose --timeout 2700 |           ctest -L main --verbose --timeout 2700 | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           cp LICENSE ./build/bin/ |  | ||||||
|           zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip ./build/bin/* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip |  | ||||||
|           name: llama-bin-ubuntu-vulkan-x64.zip |  | ||||||
|  |  | ||||||
|   ubuntu-22-cmake-hip: |   ubuntu-22-cmake-hip: | ||||||
|     runs-on: ubuntu-22.04 |     runs-on: ubuntu-22.04 | ||||||
|     container: rocm/dev-ubuntu-22.04:6.0.2 |     container: rocm/dev-ubuntu-22.04:6.0.2 | ||||||
| @@ -831,8 +705,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 | ||||||
| @@ -935,35 +807,6 @@ jobs: | |||||||
|       #     $env:LLAMA_SKIP_TESTS_SLOW_ON_EMULATOR = 1 |       #     $env:LLAMA_SKIP_TESTS_SLOW_ON_EMULATOR = 1 | ||||||
|       #     & $sde -future -- ctest -L main -C Release --verbose --timeout 900 |       #     & $sde -future -- ctest -L main -C Release --verbose --timeout 900 | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         env: |  | ||||||
|           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} |  | ||||||
|         run: | |  | ||||||
|           Copy-Item $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\Release\libcurl-x64.dll |  | ||||||
|           7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip .\build\bin\Release\* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip |  | ||||||
|           name: llama-bin-win-${{ matrix.build }}.zip |  | ||||||
|  |  | ||||||
|   ubuntu-latest-cmake-cuda: |   ubuntu-latest-cmake-cuda: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     container: nvidia/cuda:12.6.2-devel-ubuntu24.04 |     container: nvidia/cuda:12.6.2-devel-ubuntu24.04 | ||||||
| @@ -972,8 +815,6 @@ jobs: | |||||||
|         - name: Clone |         - name: Clone | ||||||
|           id: checkout |           id: checkout | ||||||
|           uses: actions/checkout@v4 |           uses: actions/checkout@v4 | ||||||
|           with: |  | ||||||
|             fetch-depth: 0 |  | ||||||
|  |  | ||||||
|         - name: Install dependencies |         - name: Install dependencies | ||||||
|           env: |           env: | ||||||
| @@ -1005,77 +846,23 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|         cuda: ['12.4', '11.7'] |         cuda: ['12.4', '11.7'] | ||||||
|         build: ['cuda'] |  | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - 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 | ||||||
|         with: |         with: | ||||||
|           key: ${{ github.job }}-${{ matrix.cuda }}-${{ matrix.build }} |           key: windows-cuda-${{ matrix.cuda }} | ||||||
|           variant: ccache |           variant: ccache | ||||||
|           evict-old-files: 1d |           evict-old-files: 1d | ||||||
|  |  | ||||||
|       - name: Install Cuda Toolkit 11.7 |       - name: Install Cuda Toolkit | ||||||
|         if: ${{ matrix.cuda == '11.7' }} |         uses: ./.github/actions/windows-setup-cuda | ||||||
|         run: | |         with: | ||||||
|           mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" |           cuda_version: ${{ matrix.cuda }} | ||||||
|           choco install unzip -y |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.7.99-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.7.99-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.7.99-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-11.7.4.6-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.7.91-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.7.91-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.7.101-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.7.91-archive.zip" |  | ||||||
|           unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_cudart-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvcc-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvrtc-windows-x86_64-11.7.99-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libcublas-windows-x86_64-11.7.4.6-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvtx-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\visual_studio_integration-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_nvprof-windows-x86_64-11.7.101-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\cuda_cccl-windows-x86_64-11.7.91-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" /E /I /H /Y |  | ||||||
|           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |  | ||||||
|           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |  | ||||||
|           echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 |  | ||||||
|           echo "CUDA_PATH_V11_7=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 |  | ||||||
|  |  | ||||||
|       - name: Install Cuda Toolkit 12.4 |  | ||||||
|         if: ${{ matrix.cuda == '12.4' }} |  | ||||||
|         run: | |  | ||||||
|           mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" |  | ||||||
|           choco install unzip -y |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-12.4.131-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-12.4.5.8-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-12.4.127-archive.zip" |  | ||||||
|           unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_cudart-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvcc-windows-x86_64-12.4.131-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvrtc-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libcublas-windows-x86_64-12.4.5.8-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvtx-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_profiler_api-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\visual_studio_integration-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_nvprof-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\cuda_cccl-windows-x86_64-12.4.127-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" /E /I /H /Y |  | ||||||
|           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |  | ||||||
|           echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libnvvp" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |  | ||||||
|           echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 |  | ||||||
|           echo "CUDA_PATH_V12_4=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 |  | ||||||
|  |  | ||||||
|       - name: Install Ninja |       - name: Install Ninja | ||||||
|         id: install_ninja |         id: install_ninja | ||||||
| @@ -1105,51 +892,6 @@ jobs: | |||||||
|           cmake --build build --config Release -j %NINJA_JOBS% -t ggml |           cmake --build build --config Release -j %NINJA_JOBS% -t ggml | ||||||
|           cmake --build build --config Release |           cmake --build build --config Release | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         env: |  | ||||||
|           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} |  | ||||||
|         run: | |  | ||||||
|           cp $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\Release\libcurl-x64.dll |  | ||||||
|           7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip .\build\bin\Release\* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip |  | ||||||
|           name: llama-bin-win-cu${{ matrix.cuda }}-x64.zip |  | ||||||
|  |  | ||||||
|       - name: Copy and pack Cuda runtime |  | ||||||
|         if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} |  | ||||||
|         run: | |  | ||||||
|           echo "Cuda install location: ${{ env.CUDA_PATH }}" |  | ||||||
|           $dst='.\build\bin\cudart\' |  | ||||||
|           robocopy "${{env.CUDA_PATH}}\bin" $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-cu${{ matrix.cuda }}-x64.zip $dst\* |  | ||||||
|  |  | ||||||
|       - name: Upload Cuda runtime |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip |  | ||||||
|           name: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip |  | ||||||
|  |  | ||||||
|   windows-latest-cmake-sycl: |   windows-latest-cmake-sycl: | ||||||
|     runs-on: windows-latest |     runs-on: windows-latest | ||||||
|  |  | ||||||
| @@ -1165,8 +907,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 | ||||||
| @@ -1185,52 +925,6 @@ jobs: | |||||||
|         id: cmake_build |         id: cmake_build | ||||||
|         run:  examples/sycl/win-build-sycl.bat |         run:  examples/sycl/win-build-sycl.bat | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Build the release package |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           echo "cp oneAPI running time dll files in ${{ env.ONEAPI_ROOT }} to ./build/bin" |  | ||||||
|  |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_sycl_blas.5.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_core.2.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_tbb_thread.2.dll" ./build/bin |  | ||||||
|  |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_adapter_level_zero.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_adapter_opencl.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_loader.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_win_proxy_loader.dll" ./build/bin |  | ||||||
|  |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/sycl8.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/svml_dispmd.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libmmd.dll" ./build/bin |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libiomp5md.dll" ./build/bin |  | ||||||
|  |  | ||||||
|           cp "${{ env.ONEAPI_ROOT }}/dnnl/latest/bin/dnnl.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" |  | ||||||
|           7z a llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip ./build/bin/* |  | ||||||
|  |  | ||||||
|       - name: Upload the release package |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip |  | ||||||
|           name: llama-bin-win-sycl-x64.zip |  | ||||||
|  |  | ||||||
|   windows-latest-cmake-hip: |   windows-latest-cmake-hip: | ||||||
|     if: ${{ github.event.inputs.create_release != 'true' }} |     if: ${{ github.event.inputs.create_release != 'true' }} | ||||||
|     runs-on: windows-latest |     runs-on: windows-latest | ||||||
| @@ -1288,110 +982,12 @@ jobs: | |||||||
|             -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" |             -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" | ||||||
|           cmake --build build -j ${env:NUMBER_OF_PROCESSORS} |           cmake --build build -j ${env:NUMBER_OF_PROCESSORS} | ||||||
|  |  | ||||||
|   # TODO: reuse windows-latest-cmake-hip instead of duplicating this job |  | ||||||
|   windows-latest-cmake-hip-release: |  | ||||||
|     if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|     runs-on: windows-latest |  | ||||||
|  |  | ||||||
|     strategy: |  | ||||||
|       matrix: |  | ||||||
|         gpu_target: [gfx1100, gfx1101, gfx1030] |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Clone |  | ||||||
|         id: checkout |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|             fetch-depth: 0 |  | ||||||
|  |  | ||||||
|       - name: Clone rocWMMA repository |  | ||||||
|         id: clone_rocwmma |  | ||||||
|         run: | |  | ||||||
|           git clone https://github.com/rocm/rocwmma --branch rocm-6.2.4 --depth 1 |  | ||||||
|  |  | ||||||
|       - name: ccache |  | ||||||
|         uses: hendrikmuhs/ccache-action@v1.2.16 |  | ||||||
|         with: |  | ||||||
|           key: windows-latest-cmake-hip-release |  | ||||||
|           evict-old-files: 1d |  | ||||||
|  |  | ||||||
|       - name: Install |  | ||||||
|         id: depends |  | ||||||
|         run: | |  | ||||||
|           $ErrorActionPreference = "Stop" |  | ||||||
|           write-host "Downloading AMD HIP SDK Installer" |  | ||||||
|           Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q3-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe" |  | ||||||
|           write-host "Installing AMD HIP SDK" |  | ||||||
|           Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -Wait |  | ||||||
|           write-host "Completed AMD HIP SDK installation" |  | ||||||
|  |  | ||||||
|       - name: Verify ROCm |  | ||||||
|         id: verify |  | ||||||
|         run: | |  | ||||||
|           & 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version |  | ||||||
|  |  | ||||||
|       - name: libCURL |  | ||||||
|         id: get_libcurl |  | ||||||
|         uses: ./.github/actions/windows-setup-curl |  | ||||||
|  |  | ||||||
|       - name: Build |  | ||||||
|         id: cmake_build |  | ||||||
|         env: |  | ||||||
|           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} |  | ||||||
|         run: | |  | ||||||
|           $env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path) |  | ||||||
|           $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}" |  | ||||||
|           cmake -G "Unix Makefiles" -B build -S . ` |  | ||||||
|             -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" ` |  | ||||||
|             -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" ` |  | ||||||
|             -DCMAKE_CXX_FLAGS="-I$($PWD.Path.Replace('\', '/'))/rocwmma/library/include/" ` |  | ||||||
|             -DCMAKE_BUILD_TYPE=Release ` |  | ||||||
|             -DAMDGPU_TARGETS=${{ matrix.gpu_target }} ` |  | ||||||
|             -DGGML_HIP_ROCWMMA_FATTN=ON ` |  | ||||||
|             -DGGML_HIP=ON ` |  | ||||||
|             -DGGML_RPC=ON ` |  | ||||||
|             -DCURL_LIBRARY="$env:CURL_PATH/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="$env:CURL_PATH/include" |  | ||||||
|           cmake --build build -j ${env:NUMBER_OF_PROCESSORS} |  | ||||||
|           md "build\bin\rocblas\library\" |  | ||||||
|           cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\" |  | ||||||
|           cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\" |  | ||||||
|           cp "${env:HIP_PATH}\bin\rocblas\library\*" "build\bin\rocblas\library\" |  | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         env: |  | ||||||
|           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} |  | ||||||
|         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\* |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         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 |  | ||||||
|  |  | ||||||
|   ios-xcode-build: |   ios-xcode-build: | ||||||
|     runs-on: macos-latest |     runs-on: macos-latest | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout code |       - name: Checkout code | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v4 | ||||||
|         with: |  | ||||||
|           fetch-depth: 0 |  | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         id: cmake_build |         id: cmake_build | ||||||
| @@ -1418,32 +1014,6 @@ jobs: | |||||||
|       - name: Build Xcode project |       - name: Build Xcode project | ||||||
|         run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build |         run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Pack artifacts |  | ||||||
|         id: pack_artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         run: | |  | ||||||
|           zip --symlinks -r llama-${{ steps.tag.outputs.name }}-xcframework.zip build-apple/llama.xcframework |  | ||||||
|  |  | ||||||
|       - name: Upload artifacts |  | ||||||
|         if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: llama-${{ steps.tag.outputs.name }}-xcframework.zip |  | ||||||
|           name: llama-${{ steps.tag.outputs.name }}-xcframework |  | ||||||
|  |  | ||||||
|   android-build: |   android-build: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
| @@ -1471,283 +1041,8 @@ jobs: | |||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
|           cd examples/llama.android |           cd examples/llama.android | ||||||
|  |  | ||||||
|           ./gradlew build --no-daemon |           ./gradlew build --no-daemon | ||||||
|  |  | ||||||
|   release: |  | ||||||
|     if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|  |  | ||||||
|     needs: |  | ||||||
|       - ubuntu-cpu-cmake |  | ||||||
|       - ubuntu-22-cmake-vulkan |  | ||||||
|       - windows-latest-cmake |  | ||||||
|       - windows-2019-cmake-cuda |  | ||||||
|       - windows-latest-cmake-sycl |  | ||||||
|       - windows-latest-cmake-hip-release |  | ||||||
|       - macOS-latest-cmake-arm64 |  | ||||||
|       - macOS-latest-cmake-x64 |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Clone |  | ||||||
|         id: checkout |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|           fetch-depth: 0 |  | ||||||
|  |  | ||||||
|       - name: ccache |  | ||||||
|         uses: hendrikmuhs/ccache-action@v1.2.16 |  | ||||||
|         with: |  | ||||||
|           key: release |  | ||||||
|           evict-old-files: 1d |  | ||||||
|  |  | ||||||
|       - name: Determine tag name |  | ||||||
|         id: tag |  | ||||||
|         shell: bash |  | ||||||
|         run: | |  | ||||||
|           BUILD_NUMBER="$(git rev-list --count HEAD)" |  | ||||||
|           SHORT_HASH="$(git rev-parse --short=7 HEAD)" |  | ||||||
|           if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then |  | ||||||
|             echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT |  | ||||||
|           else |  | ||||||
|             SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') |  | ||||||
|             echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|       - name: Download artifacts |  | ||||||
|         id: download-artifact |  | ||||||
|         uses: actions/download-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           path: ./artifact |  | ||||||
|  |  | ||||||
|       - name: Move artifacts |  | ||||||
|         id: move_artifacts |  | ||||||
|         run: mkdir -p ./artifact/release && mv ./artifact/*/*.zip ./artifact/release |  | ||||||
|  |  | ||||||
|       - name: Create release |  | ||||||
|         id: create_release |  | ||||||
|         uses: ggml-org/action-create-release@v1 |  | ||||||
|         env: |  | ||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
|         with: |  | ||||||
|           tag_name: ${{ steps.tag.outputs.name }} |  | ||||||
|  |  | ||||||
|       - name: Upload release |  | ||||||
|         id: upload_release |  | ||||||
|         uses: actions/github-script@v3 |  | ||||||
|         with: |  | ||||||
|           github-token: ${{secrets.GITHUB_TOKEN}} |  | ||||||
|           script: | |  | ||||||
|             const path = require('path'); |  | ||||||
|             const fs = require('fs'); |  | ||||||
|             const release_id = '${{ steps.create_release.outputs.id }}'; |  | ||||||
|             for (let file of await fs.readdirSync('./artifact/release')) { |  | ||||||
|               if (path.extname(file) === '.zip') { |  | ||||||
|                 console.log('uploadReleaseAsset', file); |  | ||||||
|                 await github.repos.uploadReleaseAsset({ |  | ||||||
|                   owner: context.repo.owner, |  | ||||||
|                   repo: context.repo.repo, |  | ||||||
|                   release_id: release_id, |  | ||||||
|                   name: file, |  | ||||||
|                   data: await fs.readFileSync(`./artifact/release/${file}`) |  | ||||||
|                 }); |  | ||||||
|               } |  | ||||||
|             } |  | ||||||
|  |  | ||||||
| #  ubuntu-latest-gcc: |  | ||||||
| #    runs-on: ubuntu-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        build: [Debug, Release] |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Dependencies |  | ||||||
| #        run: | |  | ||||||
| #          sudo apt-get update |  | ||||||
| #          sudo apt-get install build-essential |  | ||||||
| #          sudo apt-get install cmake |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          make |  | ||||||
| # |  | ||||||
| #  ubuntu-latest-clang: |  | ||||||
| #    runs-on: ubuntu-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        build: [Debug, Release] |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Dependencies |  | ||||||
| #        run: | |  | ||||||
| #          sudo apt-get update |  | ||||||
| #          sudo apt-get install build-essential |  | ||||||
| #          sudo apt-get install cmake |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          make |  | ||||||
| # |  | ||||||
| #  ubuntu-latest-gcc-sanitized: |  | ||||||
| #    runs-on: ubuntu-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        sanitizer: [ADDRESS, THREAD, UNDEFINED] |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Dependencies |  | ||||||
| #        run: | |  | ||||||
| #          sudo apt-get update |  | ||||||
| #          sudo apt-get install build-essential |  | ||||||
| #          sudo apt-get install cmake |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: cmake . -DCMAKE_BUILD_TYPE=Debug -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          make |  | ||||||
| # |  | ||||||
| #  windows: |  | ||||||
| #    runs-on: windows-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        build: [Release] |  | ||||||
| #        arch: [Win32, x64] |  | ||||||
| #        include: |  | ||||||
| #          - arch: Win32 |  | ||||||
| #            s2arc: x86 |  | ||||||
| #          - arch: x64 |  | ||||||
| #            s2arc: x64 |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Add msbuild to PATH |  | ||||||
| #        uses: microsoft/setup-msbuild@v1 |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: > |  | ||||||
| #          cmake -S . -B ./build -A ${{ matrix.arch }} |  | ||||||
| #          -DCMAKE_BUILD_TYPE=${{ matrix.build }} |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          cd ./build |  | ||||||
| #          msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }} |  | ||||||
| # |  | ||||||
| #      - name: Upload binaries |  | ||||||
| #        uses: actions/upload-artifact@v4 |  | ||||||
| #        with: |  | ||||||
| #          name: llama-bin-${{ matrix.arch }} |  | ||||||
| #          path: build/bin/${{ matrix.build }} |  | ||||||
| # |  | ||||||
| #  windows-blas: |  | ||||||
| #    runs-on: windows-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        build: [Release] |  | ||||||
| #        arch: [Win32, x64] |  | ||||||
| #        blas: [ON] |  | ||||||
| #        include: |  | ||||||
| #          - arch: Win32 |  | ||||||
| #            obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x86.zip |  | ||||||
| #            s2arc: x86 |  | ||||||
| #          - arch: x64 |  | ||||||
| #            obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x64.zip |  | ||||||
| #            s2arc: x64 |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Add msbuild to PATH |  | ||||||
| #        uses: microsoft/setup-msbuild@v1 |  | ||||||
| # |  | ||||||
| #      - name: Fetch OpenBLAS |  | ||||||
| #        if: matrix.blas == 'ON' |  | ||||||
| #        run: | |  | ||||||
| #          C:/msys64/usr/bin/wget.exe -qO blas.zip ${{ matrix.obzip }} |  | ||||||
| #          7z x blas.zip -oblas -y |  | ||||||
| #          copy blas/include/cblas.h . |  | ||||||
| #          copy blas/include/openblas_config.h . |  | ||||||
| #          echo "blasdir=$env:GITHUB_WORKSPACE/blas" >> $env:GITHUB_ENV |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: > |  | ||||||
| #          cmake -S . -B ./build -A ${{ matrix.arch }} |  | ||||||
| #          -DCMAKE_BUILD_TYPE=${{ matrix.build }} |  | ||||||
| #          -DLLAMA_SUPPORT_OPENBLAS=${{ matrix.blas }} |  | ||||||
| #          -DCMAKE_LIBRARY_PATH="$env:blasdir/lib" |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          cd ./build |  | ||||||
| #          msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }} |  | ||||||
| # |  | ||||||
| #      - name: Copy libopenblas.dll |  | ||||||
| #        if: matrix.blas == 'ON' |  | ||||||
| #        run: copy "$env:blasdir/bin/libopenblas.dll" build/bin/${{ matrix.build }} |  | ||||||
| # |  | ||||||
| #      - name: Upload binaries |  | ||||||
| #        if: matrix.blas == 'ON' |  | ||||||
| #        uses: actions/upload-artifact@v4 |  | ||||||
| #        with: |  | ||||||
| #          name: llama-blas-bin-${{ matrix.arch }} |  | ||||||
| #          path: build/bin/${{ matrix.build }} |  | ||||||
| # |  | ||||||
| #  emscripten: |  | ||||||
| #    runs-on: ubuntu-latest |  | ||||||
| # |  | ||||||
| #    strategy: |  | ||||||
| #      matrix: |  | ||||||
| #        build: [Release] |  | ||||||
| # |  | ||||||
| #    steps: |  | ||||||
| #      - name: Clone |  | ||||||
| #        uses: actions/checkout@v4 |  | ||||||
| # |  | ||||||
| #      - name: Dependencies |  | ||||||
| #        run: | |  | ||||||
| #          wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz |  | ||||||
| #          tar -xvf master.tar.gz |  | ||||||
| #          emsdk-master/emsdk update |  | ||||||
| #          emsdk-master/emsdk install latest |  | ||||||
| #          emsdk-master/emsdk activate latest |  | ||||||
| # |  | ||||||
| #      - name: Configure |  | ||||||
| #        run: echo "tmp" |  | ||||||
| # |  | ||||||
| #      - name: Build |  | ||||||
| #        run: | |  | ||||||
| #          pushd emsdk-master |  | ||||||
| #          source ./emsdk_env.sh |  | ||||||
| #          popd |  | ||||||
| #          emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} |  | ||||||
| #          make |  | ||||||
|  |  | ||||||
|   openEuler-latest-cmake-cann: |   openEuler-latest-cmake-cann: | ||||||
|     if: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'Ascend NPU') }} |     if: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'Ascend NPU') }} | ||||||
|     defaults: |     defaults: | ||||||
|   | |||||||
							
								
								
									
										710
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										710
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,710 @@ | |||||||
|  | name: Create Release | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   workflow_dispatch: # allows manual triggering | ||||||
|  |     inputs: | ||||||
|  |       create_release: | ||||||
|  |         description: 'Create new release' | ||||||
|  |         required: true | ||||||
|  |         type: boolean | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |     paths: ['.github/workflows/release.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp'] | ||||||
|  |  | ||||||
|  | concurrency: | ||||||
|  |   group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | ||||||
|  |   cancel-in-progress: true | ||||||
|  |  | ||||||
|  | # Fine-grant permission | ||||||
|  | # https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token | ||||||
|  | permissions: | ||||||
|  |   contents: write # for creating release | ||||||
|  |  | ||||||
|  | env: | ||||||
|  |   BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | ||||||
|  |   CMAKE_ARGS: "-DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=ON -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON" | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   macOS-arm64: | ||||||
|  |     runs-on: macos-14 | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: macOS-latest-cmake-arm64 | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Dependencies | ||||||
|  |         id: depends | ||||||
|  |         continue-on-error: true | ||||||
|  |         run: | | ||||||
|  |           brew update | ||||||
|  |           brew install curl | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         run: | | ||||||
|  |           sysctl -a | ||||||
|  |           cmake -B build \ | ||||||
|  |             -DCMAKE_BUILD_RPATH="@loader_path" \ | ||||||
|  |             -DLLAMA_FATAL_WARNINGS=ON \ | ||||||
|  |             -DGGML_METAL_USE_BF16=ON \ | ||||||
|  |             -DGGML_METAL_EMBED_LIBRARY=ON \ | ||||||
|  |             -DGGML_RPC=ON \ | ||||||
|  |             ${{ env.CMAKE_ARGS }} | ||||||
|  |           cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           cp LICENSE ./build/bin/ | ||||||
|  |           zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip ./build/bin/* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip | ||||||
|  |           name: llama-bin-macos-arm64.zip | ||||||
|  |  | ||||||
|  |   macOS-x64: | ||||||
|  |     runs-on: macos-13 | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: macOS-latest-cmake-x64 | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Dependencies | ||||||
|  |         id: depends | ||||||
|  |         continue-on-error: true | ||||||
|  |         run: | | ||||||
|  |           brew update | ||||||
|  |           brew install curl | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         run: | | ||||||
|  |           sysctl -a | ||||||
|  |           # Metal is disabled due to intermittent failures with Github runners not having a GPU: | ||||||
|  |           # https://github.com/ggml-org/llama.cpp/actions/runs/8635935781/job/23674807267#step:5:2313 | ||||||
|  |           cmake -B build \ | ||||||
|  |             -DCMAKE_BUILD_RPATH="@loader_path" \ | ||||||
|  |             -DLLAMA_FATAL_WARNINGS=ON \ | ||||||
|  |             -DGGML_METAL=OFF \ | ||||||
|  |             -DGGML_RPC=ON | ||||||
|  |           cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           cp LICENSE ./build/bin/ | ||||||
|  |           zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip ./build/bin/* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip | ||||||
|  |           name: llama-bin-macos-x64.zip | ||||||
|  |  | ||||||
|  |   ubuntu-22-cpu: | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         include: | ||||||
|  |           - build: 'x64' | ||||||
|  |             os: ubuntu-22.04 | ||||||
|  |           - build: 'arm64' | ||||||
|  |             os: ubuntu-22.04-arm | ||||||
|  |  | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: ubuntu-cpu-cmake | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Dependencies | ||||||
|  |         id: depends | ||||||
|  |         run: | | ||||||
|  |           sudo apt-get update | ||||||
|  |           sudo apt-get install build-essential libcurl4-openssl-dev | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         run: | | ||||||
|  |           cmake -B build \ | ||||||
|  |             -DLLAMA_FATAL_WARNINGS=ON \ | ||||||
|  |             ${{ env.CMAKE_ARGS }} | ||||||
|  |           cmake --build build --config Release -j $(nproc) | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           cp LICENSE ./build/bin/ | ||||||
|  |           zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-${{ matrix.build }}.zip ./build/bin/* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-${{ matrix.build }}.zip | ||||||
|  |           name: llama-bin-ubuntu-${{ matrix.build }}.zip | ||||||
|  |  | ||||||
|  |   ubuntu-22-vulkan: | ||||||
|  |     runs-on: ubuntu-22.04 | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: ubuntu-22-cmake-vulkan | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Dependencies | ||||||
|  |         id: depends | ||||||
|  |         run: | | ||||||
|  |           wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - | ||||||
|  |           sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list | ||||||
|  |           sudo apt-get update -y | ||||||
|  |           sudo apt-get install -y build-essential mesa-vulkan-drivers vulkan-sdk libcurl4-openssl-dev | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         run: | | ||||||
|  |           cmake -B build \ | ||||||
|  |             -DGGML_VULKAN=ON \ | ||||||
|  |             ${{ env.CMAKE_ARGS }} | ||||||
|  |           cmake --build build --config Release -j $(nproc) | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           cp LICENSE ./build/bin/ | ||||||
|  |           zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip ./build/bin/* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip | ||||||
|  |           name: llama-bin-ubuntu-vulkan-x64.zip | ||||||
|  |  | ||||||
|  |   windows: | ||||||
|  |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     env: | ||||||
|  |       OPENBLAS_VERSION: 0.3.23 | ||||||
|  |       VULKAN_VERSION: 1.4.309.0 | ||||||
|  |  | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         include: | ||||||
|  |           - build: 'cpu-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' | ||||||
|  |           #  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' | ||||||
|  |             defines: '-DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_VULKAN=ON' | ||||||
|  |           - build: 'cpu-arm64' | ||||||
|  |             defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DGGML_NATIVE=OFF' | ||||||
|  |           - build: 'opencl-adreno-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' | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: windows-latest-cmake-${{ matrix.build }} | ||||||
|  |           variant: ccache | ||||||
|  |           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 | ||||||
|  |         id: get_vulkan | ||||||
|  |         if: ${{ matrix.build == 'vulkan-x64' }} | ||||||
|  |         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" | ||||||
|  |           & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install | ||||||
|  |           Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" | ||||||
|  |           Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" | ||||||
|  |  | ||||||
|  |       - name: Install Ninja | ||||||
|  |         id: install_ninja | ||||||
|  |         run: | | ||||||
|  |           choco install ninja | ||||||
|  |  | ||||||
|  |       - name: Install OpenCL Headers and Libs | ||||||
|  |         id: install_opencl | ||||||
|  |         if: ${{ matrix.build == 'opencl-adreno-arm64' }} | ||||||
|  |         run: | | ||||||
|  |           git clone https://github.com/KhronosGroup/OpenCL-Headers | ||||||
|  |           cd OpenCL-Headers | ||||||
|  |           cmake -B build ` | ||||||
|  |             -DBUILD_TESTING=OFF ` | ||||||
|  |             -DOPENCL_HEADERS_BUILD_TESTING=OFF ` | ||||||
|  |             -DOPENCL_HEADERS_BUILD_CXX_TESTS=OFF ` | ||||||
|  |             -DCMAKE_INSTALL_PREFIX="$env:RUNNER_TEMP/opencl-arm64-release" | ||||||
|  |           cmake --build build --target install | ||||||
|  |           git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader | ||||||
|  |           cd OpenCL-ICD-Loader | ||||||
|  |           cmake -B build-arm64-release ` | ||||||
|  |             -A arm64 ` | ||||||
|  |             -DCMAKE_PREFIX_PATH="$env:RUNNER_TEMP/opencl-arm64-release" ` | ||||||
|  |             -DCMAKE_INSTALL_PREFIX="$env:RUNNER_TEMP/opencl-arm64-release" | ||||||
|  |           cmake --build build-arm64-release --target install --config release | ||||||
|  |  | ||||||
|  |       - name: libCURL | ||||||
|  |         id: get_libcurl | ||||||
|  |         uses: ./.github/actions/windows-setup-curl | ||||||
|  |  | ||||||
|  |       - name: 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: | | ||||||
|  |           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 | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         env: | ||||||
|  |           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} | ||||||
|  |         run: | | ||||||
|  |           Copy-Item $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\Release\libcurl-x64.dll | ||||||
|  |           7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip .\build\bin\Release\* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip | ||||||
|  |           name: llama-bin-win-${{ matrix.build }}.zip | ||||||
|  |  | ||||||
|  |   windows-cuda: | ||||||
|  |     runs-on: windows-2019 | ||||||
|  |  | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         cuda: ['12.4', '11.7'] | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |             fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: Install ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: windows-cuda-${{ matrix.cuda }} | ||||||
|  |           variant: ccache | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Install Cuda Toolkit | ||||||
|  |         uses: ./.github/actions/windows-setup-cuda | ||||||
|  |         with: | ||||||
|  |           cuda_version: ${{ matrix.cuda }} | ||||||
|  |  | ||||||
|  |       - name: Install Ninja | ||||||
|  |         id: install_ninja | ||||||
|  |         run: | | ||||||
|  |           choco install ninja | ||||||
|  |  | ||||||
|  |       - name: libCURL | ||||||
|  |         id: get_libcurl | ||||||
|  |         uses: ./.github/actions/windows-setup-curl | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         shell: cmd | ||||||
|  |         env: | ||||||
|  |           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} | ||||||
|  |         run: | | ||||||
|  |           call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | ||||||
|  |           cmake -S . -B build -G "Ninja Multi-Config" ^ | ||||||
|  |             -DGGML_NATIVE=OFF ^ | ||||||
|  |             -DGGML_BACKEND_DL=ON ^ | ||||||
|  |             -DGGML_CPU_ALL_VARIANTS=ON ^ | ||||||
|  |             -DGGML_CUDA=ON ^ | ||||||
|  |             -DCURL_LIBRARY="%CURL_PATH%/lib/libcurl.dll.a" -DCURL_INCLUDE_DIR="%CURL_PATH%/include" ^ | ||||||
|  |             ${{ env.CMAKE_ARGS }} | ||||||
|  |           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 | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         env: | ||||||
|  |           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} | ||||||
|  |         run: | | ||||||
|  |           cp $env:CURL_PATH\bin\libcurl-x64.dll .\build\bin\Release\libcurl-x64.dll | ||||||
|  |           7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip .\build\bin\Release\* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip | ||||||
|  |           name: llama-bin-win-cu${{ matrix.cuda }}-x64.zip | ||||||
|  |  | ||||||
|  |       - name: Copy and pack Cuda runtime | ||||||
|  |         if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | ||||||
|  |         run: | | ||||||
|  |           echo "Cuda install location: ${{ env.CUDA_PATH }}" | ||||||
|  |           $dst='.\build\bin\cudart\' | ||||||
|  |           robocopy "${{env.CUDA_PATH}}\bin" $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-cu${{ matrix.cuda }}-x64.zip $dst\* | ||||||
|  |  | ||||||
|  |       - name: Upload Cuda runtime | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip | ||||||
|  |           name: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip | ||||||
|  |  | ||||||
|  |   windows-sycl: | ||||||
|  |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     defaults: | ||||||
|  |       run: | ||||||
|  |         shell: bash | ||||||
|  |  | ||||||
|  |     env: | ||||||
|  |       WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b380d914-366b-4b77-a74a-05e3c38b3514/intel-oneapi-base-toolkit-2025.0.0.882_offline.exe | ||||||
|  |       WINDOWS_DPCPP_MKL: intel.oneapi.win.cpp-dpcpp-common:intel.oneapi.win.mkl.devel:intel.oneapi.win.dnnl:intel.oneapi.win.tbb.devel | ||||||
|  |       ONEAPI_ROOT: "C:/Program Files (x86)/Intel/oneAPI" | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: windows-latest-cmake-sycl | ||||||
|  |           variant: ccache | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Install | ||||||
|  |         run:  | | ||||||
|  |           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 | ||||||
|  |         id: cmake_build | ||||||
|  |         run:  examples/sycl/win-build-sycl.bat | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Build the release package | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           echo "cp oneAPI running time dll files in ${{ env.ONEAPI_ROOT }} to ./build/bin" | ||||||
|  |  | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_sycl_blas.5.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_core.2.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_tbb_thread.2.dll" ./build/bin | ||||||
|  |  | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_adapter_level_zero.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_adapter_opencl.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_loader.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/ur_win_proxy_loader.dll" ./build/bin | ||||||
|  |  | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/sycl8.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/svml_dispmd.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libmmd.dll" ./build/bin | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libiomp5md.dll" ./build/bin | ||||||
|  |  | ||||||
|  |           cp "${{ env.ONEAPI_ROOT }}/dnnl/latest/bin/dnnl.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" | ||||||
|  |           7z a llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip ./build/bin/* | ||||||
|  |  | ||||||
|  |       - name: Upload the release package | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip | ||||||
|  |           name: llama-bin-win-sycl-x64.zip | ||||||
|  |  | ||||||
|  |   windows-hip: | ||||||
|  |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         gpu_target: [gfx1100, gfx1101, gfx1030] | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |             fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: Clone rocWMMA repository | ||||||
|  |         id: clone_rocwmma | ||||||
|  |         run: | | ||||||
|  |           git clone https://github.com/rocm/rocwmma --branch rocm-6.2.4 --depth 1 | ||||||
|  |  | ||||||
|  |       - name: ccache | ||||||
|  |         uses: hendrikmuhs/ccache-action@v1.2.16 | ||||||
|  |         with: | ||||||
|  |           key: windows-latest-cmake-hip-release | ||||||
|  |           evict-old-files: 1d | ||||||
|  |  | ||||||
|  |       - name: Install | ||||||
|  |         id: depends | ||||||
|  |         run: | | ||||||
|  |           $ErrorActionPreference = "Stop" | ||||||
|  |           write-host "Downloading AMD HIP SDK Installer" | ||||||
|  |           Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q3-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe" | ||||||
|  |           write-host "Installing AMD HIP SDK" | ||||||
|  |           Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -Wait | ||||||
|  |           write-host "Completed AMD HIP SDK installation" | ||||||
|  |  | ||||||
|  |       - name: Verify ROCm | ||||||
|  |         id: verify | ||||||
|  |         run: | | ||||||
|  |           & 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version | ||||||
|  |  | ||||||
|  |       - name: libCURL | ||||||
|  |         id: get_libcurl | ||||||
|  |         uses: ./.github/actions/windows-setup-curl | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         env: | ||||||
|  |           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} | ||||||
|  |         run: | | ||||||
|  |           $env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path) | ||||||
|  |           $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}" | ||||||
|  |           cmake -G "Unix Makefiles" -B build -S . ` | ||||||
|  |             -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" ` | ||||||
|  |             -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" ` | ||||||
|  |             -DCMAKE_CXX_FLAGS="-I$($PWD.Path.Replace('\', '/'))/rocwmma/library/include/" ` | ||||||
|  |             -DCMAKE_BUILD_TYPE=Release ` | ||||||
|  |             -DAMDGPU_TARGETS=${{ matrix.gpu_target }} ` | ||||||
|  |             -DGGML_HIP_ROCWMMA_FATTN=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} | ||||||
|  |           md "build\bin\rocblas\library\" | ||||||
|  |           cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\" | ||||||
|  |           cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\" | ||||||
|  |           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 | ||||||
|  |         id: pack_artifacts | ||||||
|  |         env: | ||||||
|  |           CURL_PATH: ${{ steps.get_libcurl.outputs.curl_path }} | ||||||
|  |         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\* | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         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 | ||||||
|  |  | ||||||
|  |   ios-xcode-build: | ||||||
|  |     runs-on: macos-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Checkout code | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         id: cmake_build | ||||||
|  |         run: | | ||||||
|  |           sysctl -a | ||||||
|  |           cmake -B build -G Xcode \ | ||||||
|  |             -DGGML_METAL_USE_BF16=ON \ | ||||||
|  |             -DGGML_METAL_EMBED_LIBRARY=ON \ | ||||||
|  |             -DLLAMA_CURL=OFF \ | ||||||
|  |             -DLLAMA_BUILD_EXAMPLES=OFF \ | ||||||
|  |             -DLLAMA_BUILD_TOOLS=OFF \ | ||||||
|  |             -DLLAMA_BUILD_TESTS=OFF \ | ||||||
|  |             -DLLAMA_BUILD_SERVER=OFF \ | ||||||
|  |             -DCMAKE_SYSTEM_NAME=iOS \ | ||||||
|  |             -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \ | ||||||
|  |             -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml | ||||||
|  |           cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO | ||||||
|  |  | ||||||
|  |       - name: xcodebuild for swift package | ||||||
|  |         id: xcodebuild | ||||||
|  |         run: | | ||||||
|  |           ./build-xcframework.sh | ||||||
|  |  | ||||||
|  |       - name: Build Xcode project | ||||||
|  |         run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Pack artifacts | ||||||
|  |         id: pack_artifacts | ||||||
|  |         run: | | ||||||
|  |           zip --symlinks -r llama-${{ steps.tag.outputs.name }}-xcframework.zip build-apple/llama.xcframework | ||||||
|  |  | ||||||
|  |       - name: Upload artifacts | ||||||
|  |         uses: actions/upload-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: llama-${{ steps.tag.outputs.name }}-xcframework.zip | ||||||
|  |           name: llama-${{ steps.tag.outputs.name }}-xcframework | ||||||
|  |  | ||||||
|  |   release: | ||||||
|  |     if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} | ||||||
|  |  | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     needs: | ||||||
|  |       - ubuntu-22-cpu | ||||||
|  |       - ubuntu-22-vulkan | ||||||
|  |       - windows | ||||||
|  |       - windows-cuda | ||||||
|  |       - windows-sycl | ||||||
|  |       - windows-hip | ||||||
|  |       - macOS-arm64 | ||||||
|  |       - macOS-x64 | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Clone | ||||||
|  |         id: checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: Determine tag name | ||||||
|  |         id: tag | ||||||
|  |         uses: ./.github/actions/get-tag-name | ||||||
|  |  | ||||||
|  |       - name: Download artifacts | ||||||
|  |         id: download-artifact | ||||||
|  |         uses: actions/download-artifact@v4 | ||||||
|  |         with: | ||||||
|  |           path: ./artifact | ||||||
|  |  | ||||||
|  |       - name: Move artifacts | ||||||
|  |         id: move_artifacts | ||||||
|  |         run: mkdir -p ./artifact/release && mv ./artifact/*/*.zip ./artifact/release | ||||||
|  |  | ||||||
|  |       - name: Create release | ||||||
|  |         id: create_release | ||||||
|  |         uses: ggml-org/action-create-release@v1 | ||||||
|  |         env: | ||||||
|  |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |         with: | ||||||
|  |           tag_name: ${{ steps.tag.outputs.name }} | ||||||
|  |  | ||||||
|  |       - name: Upload release | ||||||
|  |         id: upload_release | ||||||
|  |         uses: actions/github-script@v3 | ||||||
|  |         with: | ||||||
|  |           github-token: ${{secrets.GITHUB_TOKEN}} | ||||||
|  |           script: | | ||||||
|  |             const path = require('path'); | ||||||
|  |             const fs = require('fs'); | ||||||
|  |             const release_id = '${{ steps.create_release.outputs.id }}'; | ||||||
|  |             for (let file of await fs.readdirSync('./artifact/release')) { | ||||||
|  |               if (path.extname(file) === '.zip') { | ||||||
|  |                 console.log('uploadReleaseAsset', file); | ||||||
|  |                 await github.repos.uploadReleaseAsset({ | ||||||
|  |                   owner: context.repo.owner, | ||||||
|  |                   repo: context.repo.repo, | ||||||
|  |                   release_id: release_id, | ||||||
|  |                   name: file, | ||||||
|  |                   data: await fs.readFileSync(`./artifact/release/${file}`) | ||||||
|  |                 }); | ||||||
|  |               } | ||||||
|  |             } | ||||||
		Reference in New Issue
	
	Block a user
	 Diego Devesa
					Diego Devesa