Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit fd9d8c3

Browse files
authored
Windows enable ccache (#763)
Co-authored-by: Hien To <tominhhien97@gmail.com>
1 parent edd3d8d commit fd9d8c3

File tree

5 files changed

+257
-47
lines changed

5 files changed

+257
-47
lines changed

.github/workflows/cortex-build.yml

Lines changed: 83 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,132 +48,177 @@ jobs:
4848
name: "amd64-avx2"
4949
runs-on: "ubuntu-20-04"
5050
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF"
51+
build-deps-cmake-flags: ""
5152
run-e2e: true
53+
ccache-dir: ''
5254

5355
- os: "linux"
5456
name: "amd64-avx"
5557
runs-on: "ubuntu-20-04"
5658
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF"
59+
build-deps-cmake-flags: ""
5760
run-e2e: false
61+
ccache-dir: ''
5862

5963
- os: "linux"
6064
name: "amd64-avx512"
6165
runs-on: "ubuntu-20-04"
6266
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF"
67+
build-deps-cmake-flags: ""
6368
run-e2e: false
69+
ccache-dir: ''
6470

6571
- os: "linux"
6672
name: "amd64-vulkan"
6773
runs-on: "ubuntu-20-04-cuda-11-7"
6874
cmake-flags: "-DLLAMA_VULKAN=ON -DLLAMA_NATIVE=OFF"
75+
build-deps-cmake-flags: ""
6976
run-e2e: false
77+
ccache-dir: ''
7078

7179
- os: "linux"
7280
name: "amd64-avx2-cuda-11-7"
7381
runs-on: "ubuntu-20-04-cuda-11-7"
7482
cmake-flags: "-DCUDA_11_7=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX2=ON"
83+
build-deps-cmake-flags: ""
7584
run-e2e: false
85+
ccache-dir: ''
7686

7787
- os: "linux"
7888
name: "amd64-avx-cuda-11-7"
7989
runs-on: "ubuntu-20-04-cuda-11-7"
8090
cmake-flags: "-DCUDA_11_7=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX2=OFF"
91+
build-deps-cmake-flags: ""
8192
run-e2e: false
93+
ccache-dir: ''
8294

8395
- os: "linux"
8496
name: "amd64-avx512-cuda-11-7"
8597
runs-on: "ubuntu-20-04-cuda-11-7"
8698
cmake-flags: "-DCUDA_11_7=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX512=ON"
99+
build-deps-cmake-flags: ""
87100
run-e2e: false
101+
ccache-dir: ''
88102

89103
- os: "linux"
90104
name: "amd64-avx2-cuda-12-0"
91105
runs-on: "ubuntu-20-04-cuda-12-0"
92106
cmake-flags: "-DCUDA_12_0=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX2=ON"
107+
build-deps-cmake-flags: ""
93108
run-e2e: false
109+
ccache-dir: ''
94110

95111
- os: "linux"
96112
name: "amd64-avx-cuda-12-0"
97113
runs-on: "ubuntu-20-04-cuda-12-0"
98114
cmake-flags: "-DCUDA_12_0=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX2=OFF"
115+
build-deps-cmake-flags: ""
99116
run-e2e: false
117+
ccache-dir: ''
100118

101119
- os: "linux"
102120
name: "amd64-avx512-cuda-12-0"
103121
runs-on: "ubuntu-20-04-cuda-12-0"
104122
cmake-flags: "-DCUDA_12_0=ON -DLLAMA_NATIVE=OFF -DLLAMA_CUDA=ON -DLLAMA_AVX512=ON"
123+
build-deps-cmake-flags: ""
105124
run-e2e: false
125+
ccache-dir: ''
106126

107127
- os: "mac"
108128
name: "amd64"
109129
runs-on: "macos-13"
110130
cmake-flags: ""
131+
build-deps-cmake-flags: ""
111132
run-e2e: true
133+
ccache-dir: ''
112134

113135
- os: "mac"
114136
name: "arm64"
115137
runs-on: "macos-latest"
116138
cmake-flags: "-DMAC_ARM64=ON"
117-
run-e2e: false
139+
build-deps-cmake-flags: ""
140+
run-e2e: true
141+
ccache-dir: ''
118142

119143
- os: "windows"
120144
name: "amd64-avx2"
121-
runs-on: "windows-cuda-12-0"
122-
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
145+
runs-on: "windows-cuda-11-7"
146+
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
147+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
123148
run-e2e: true
149+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
124150

125151
- os: "windows"
126152
name: "amd64-avx"
127-
runs-on: "windows-cuda-12-0"
128-
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
153+
runs-on: "windows-cuda-11-7"
154+
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
155+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
129156
run-e2e: false
157+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
130158

131159
- os: "windows"
132160
name: "amd64-avx512"
133161
runs-on: "windows-cuda-12-0"
134-
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
162+
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
163+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
135164
run-e2e: false
165+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
136166

137167
- os: "windows"
138168
name: "amd64-vulkan"
139169
runs-on: "windows-cuda-12-0"
140-
cmake-flags: "-DLLAMA_VULKAN=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
170+
cmake-flags: "-DLLAMA_VULKAN=ON -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
171+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
141172
run-e2e: false
173+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
142174

143175
- os: "windows"
144176
name: "amd64-avx2-cuda-12-0"
145177
runs-on: "windows-cuda-12-0"
146-
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
178+
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
179+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
147180
run-e2e: false
181+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
148182

149183
- os: "windows"
150184
name: "amd64-avx-cuda-12-0"
151185
runs-on: "windows-cuda-12-0"
152-
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
186+
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
187+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
153188
run-e2e: false
189+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
154190

155191
- os: "windows"
156192
name: "amd64-avx512-cuda-12-0"
157193
runs-on: "windows-cuda-12-0"
158-
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
194+
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DCUDA_12_0=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
195+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
159196
run-e2e: false
197+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
160198

161199
- os: "windows"
162200
name: "amd64-avx2-cuda-11-7"
163201
runs-on: "windows-cuda-11-7"
164-
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
202+
cmake-flags: "-DLLAMA_AVX2=ON -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
203+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
165204
run-e2e: false
205+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
166206

167207
- os: "windows"
168208
name: "amd64-avx-cuda-11-7"
169209
runs-on: "windows-cuda-11-7"
170-
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
210+
cmake-flags: "-DLLAMA_AVX2=OFF -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
211+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
171212
run-e2e: false
213+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
214+
172215
- os: "windows"
173216
name: "amd64-avx512-cuda-11-7"
174217
runs-on: "windows-cuda-11-7"
175-
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE"
218+
cmake-flags: "-DLLAMA_AVX512=ON -DLLAMA_NATIVE=OFF -DCUDA_11_7=ON -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
219+
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
176220
run-e2e: false
221+
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
177222

178223
steps:
179224
- name: Clone
@@ -190,7 +235,19 @@ jobs:
190235
- name: Install choco on Windows
191236
if: runner.os == 'Windows'
192237
run: |
193-
choco install make -y
238+
choco install make pkgconfiglite ccache awscli 7zip ninja -y
239+
240+
- name: Download ccache from s3
241+
if: runner.os == 'Windows'
242+
continue-on-error: true
243+
run: |
244+
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
245+
refreshenv
246+
aws s3 cp s3://${{ secrets.MINIO_BUCKET_NAME }}/cortex-cpp-${{ matrix.os }}-${{ matrix.name }} ${{ matrix.ccache-dir }} --recursive --endpoint ${{ secrets.MINIO_ENDPOINT }}
247+
env:
248+
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}"
249+
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}"
250+
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}"
194251

195252
- name: Get Cer for code signing
196253
if: runner.os == 'macOS'
@@ -208,7 +265,7 @@ jobs:
208265
- name: Build
209266
run: |
210267
cd cortex-cpp
211-
make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}"
268+
make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
212269
213270
- name: Pre-package
214271
run: |
@@ -261,6 +318,17 @@ jobs:
261318
asset_path: ./cortex-cpp/cortex-cpp.tar.gz
262319
asset_name: cortex-cpp-${{ needs.create-draft-release.outputs.version }}-${{ matrix.os }}-${{ matrix.name }}.tar.gz
263320
asset_content_type: application/gzip
321+
- name: Upload ccache to s3
322+
continue-on-error: true
323+
if: always() && runner.os == 'Windows'
324+
run: |
325+
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
326+
refreshenv
327+
aws s3 cp ${{ matrix.ccache-dir }} s3://${{ secrets.MINIO_BUCKET_NAME }}/cortex-cpp-${{ matrix.os }}-${{ matrix.name }} --recursive --endpoint ${{ secrets.MINIO_ENDPOINT }}
328+
env:
329+
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}"
330+
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}"
331+
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}"
264332

265333
build-cortex-single-binary:
266334
runs-on: ${{ matrix.runs-on }}

0 commit comments

Comments
 (0)