Skip to content

Commit 3dcbc1d

Browse files
committed
Merge remote-tracking branch 'abetlen/main'
2 parents cde6ee9 + 2bc1d97 commit 3dcbc1d

40 files changed

+3267
-3229
lines changed
+144
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
name: Build Release
2+
3+
on: workflow_dispatch
4+
5+
permissions:
6+
contents: write
7+
8+
jobs:
9+
build_wheels:
10+
name: Build wheels on ${{ matrix.os }}
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
matrix:
14+
os: [ubuntu-20.04, windows-2019, macos-13]
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
with:
19+
submodules: "recursive"
20+
21+
# Used to host cibuildwheel
22+
- uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.9"
25+
26+
- name: Install dependencies (Linux/MacOS)
27+
if: runner.os != 'Windows'
28+
run: |
29+
python -m pip install --upgrade pip
30+
python -m pip install uv
31+
RUST_LOG=trace python -m uv pip install -e .[all] --verbose
32+
shell: bash
33+
34+
- name: Install dependencies (Windows)
35+
if: runner.os == 'Windows'
36+
env:
37+
RUST_LOG: trace
38+
run: |
39+
python -m pip install --upgrade pip
40+
python -m pip install uv
41+
python -m uv pip install -e .[all] --verbose
42+
shell: cmd
43+
44+
- name: Build wheels
45+
uses: pypa/cibuildwheel@v2.22.0
46+
env:
47+
# disable repair
48+
CIBW_REPAIR_WHEEL_COMMAND: ""
49+
with:
50+
package-dir: .
51+
output-dir: wheelhouse
52+
53+
- uses: actions/upload-artifact@v4
54+
with:
55+
name: wheels-${{ matrix.os }}
56+
path: ./wheelhouse/*.whl
57+
58+
build_wheels_arm64:
59+
name: Build arm64 wheels
60+
runs-on: ubuntu-latest
61+
steps:
62+
- uses: actions/checkout@v4
63+
with:
64+
submodules: "recursive"
65+
66+
- name: Set up QEMU
67+
uses: docker/setup-qemu-action@v3
68+
with:
69+
platforms: linux/arm64
70+
71+
- name: Build wheels
72+
uses: pypa/cibuildwheel@v2.22.0
73+
env:
74+
CIBW_SKIP: "*musllinux* pp*"
75+
CIBW_REPAIR_WHEEL_COMMAND: ""
76+
CIBW_ARCHS: "aarch64"
77+
CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*"
78+
with:
79+
output-dir: wheelhouse
80+
81+
- name: Upload wheels as artifacts
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: wheels_arm64
85+
path: ./wheelhouse/*.whl
86+
87+
build_sdist:
88+
name: Build source distribution
89+
runs-on: ubuntu-latest
90+
91+
steps:
92+
- uses: actions/checkout@v4
93+
with:
94+
submodules: "recursive"
95+
96+
- uses: actions/setup-python@v5
97+
with:
98+
python-version: "3.9"
99+
100+
- name: Install dependencies (Linux/MacOS)
101+
if: runner.os != 'Windows'
102+
run: |
103+
python -m pip install --upgrade pip
104+
python -m pip install uv
105+
RUST_LOG=trace python -m uv pip install -e .[all] --verbose
106+
python -m uv pip install build
107+
shell: bash
108+
109+
- name: Install dependencies (Windows)
110+
if: runner.os == 'Windows'
111+
env:
112+
RUST_LOG: trace
113+
run: |
114+
python -m pip install --upgrade pip
115+
python -m pip install uv
116+
python -m uv pip install -e .[all] --verbose
117+
python -m uv pip install build
118+
shell: cmd
119+
120+
- name: Build source distribution
121+
run: |
122+
python -m build --sdist
123+
124+
- uses: actions/upload-artifact@v4
125+
with:
126+
name: sdist
127+
path: ./dist/*.tar.gz
128+
129+
release:
130+
name: Release
131+
needs: [build_wheels, build_wheels_arm64, build_sdist]
132+
runs-on: ubuntu-latest
133+
134+
steps:
135+
- uses: actions/download-artifact@v4
136+
with:
137+
merge-multiple: true
138+
path: dist
139+
140+
- uses: softprops/action-gh-release@v2
141+
with:
142+
files: dist/*
143+
env:
144+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
name: Build Wheels (CUDA)
2+
3+
on: workflow_dispatch
4+
5+
permissions:
6+
contents: write
7+
8+
jobs:
9+
define_matrix:
10+
name: Define Build Matrix
11+
runs-on: ubuntu-latest
12+
outputs:
13+
matrix: ${{ steps.set-matrix.outputs.matrix }}
14+
defaults:
15+
run:
16+
shell: pwsh
17+
18+
steps:
19+
- name: Define Job Output
20+
id: set-matrix
21+
run: |
22+
$matrix = @{
23+
'os' = @('ubuntu-latest', 'windows-2019')
24+
'pyver' = @("3.9", "3.10", "3.11", "3.12")
25+
'cuda' = @("12.1.1", "12.2.2", "12.3.2", "12.4.1") #, "12.5.1", "12.6.1")
26+
'releasetag' = @("basic")
27+
}
28+
29+
$matrixOut = ConvertTo-Json $matrix -Compress
30+
Write-Output ('matrix=' + $matrixOut) >> $env:GITHUB_OUTPUT
31+
32+
build_wheels:
33+
name: Build Wheel ${{ matrix.os }} ${{ matrix.pyver }} ${{ matrix.cuda }} ${{ matrix.releasetag == 'wheels' && 'AVX2' || matrix.releasetag }}
34+
needs: define_matrix
35+
runs-on: ${{ matrix.os }}
36+
strategy:
37+
matrix: ${{ fromJSON(needs.define_matrix.outputs.matrix) }}
38+
defaults:
39+
run:
40+
shell: pwsh
41+
env:
42+
CUDAVER: ${{ matrix.cuda }}
43+
AVXVER: ${{ matrix.releasetag }}
44+
45+
steps:
46+
- name: Add MSBuild to PATH
47+
if: runner.os == 'Windows'
48+
uses: microsoft/setup-msbuild@v2
49+
with:
50+
vs-version: '[16.11,16.12)'
51+
52+
- uses: actions/checkout@v4
53+
with:
54+
submodules: "recursive"
55+
56+
- uses: actions/setup-python@v5
57+
with:
58+
python-version: ${{ matrix.pyver }}
59+
cache: 'pip'
60+
61+
- name: Setup Mamba
62+
uses: conda-incubator/setup-miniconda@v3.1.0
63+
with:
64+
activate-environment: "build"
65+
python-version: ${{ matrix.pyver }}
66+
miniforge-variant: Mambaforge
67+
miniforge-version: latest
68+
use-mamba: true
69+
add-pip-as-python-dependency: true
70+
auto-activate-base: false
71+
72+
- name: VS Integration Cache
73+
id: vs-integration-cache
74+
if: runner.os == 'Windows'
75+
uses: actions/cache@v4
76+
with:
77+
path: ./MSBuildExtensions
78+
key: cuda-${{ matrix.cuda }}-vs-integration
79+
80+
- name: Get Visual Studio Integration
81+
if: runner.os == 'Windows' && steps.vs-integration-cache.outputs.cache-hit != 'true'
82+
run: |
83+
if ($env:CUDAVER -eq '12.1.1') {$x = '12.1.0'} else {$x = $env:CUDAVER}
84+
$links = (Invoke-RestMethod 'https://raw.githubusercontent.com/Jimver/cuda-toolkit/master/src/links/windows-links.ts').Trim().split().where({$_ -ne ''})
85+
for ($i=$q=0;$i -lt $links.count -and $q -lt 2;$i++) {if ($links[$i] -eq "'$x',") {$q++}}
86+
Invoke-RestMethod $links[$i].Trim("'") -OutFile 'cudainstaller.zip'
87+
& 'C:\Program Files\7-Zip\7z.exe' e cudainstaller.zip -oMSBuildExtensions -r *\MSBuildExtensions\* > $null
88+
Remove-Item 'cudainstaller.zip'
89+
90+
- name: Install Visual Studio Integration
91+
if: runner.os == 'Windows'
92+
run: |
93+
$y = (gi '.\MSBuildExtensions').fullname + '\*'
94+
(gi 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\*\BuildCustomizations').fullname.foreach({cp $y $_})
95+
$cupath = 'CUDA_PATH_V' + $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','_')
96+
echo "$cupath=$env:CONDA_PREFIX" >> $env:GITHUB_ENV
97+
98+
- name: Install Dependencies
99+
env:
100+
MAMBA_DOWNLOAD_FAILFAST: "0"
101+
MAMBA_NO_LOW_SPEED_LIMIT: "1"
102+
run: |
103+
$cudaVersion = $env:CUDAVER
104+
mamba install -y 'cuda' -c nvidia/label/cuda-$cudaVersion
105+
python -m pip install build wheel
106+
107+
- name: Build Wheel
108+
run: |
109+
$cudaVersion = $env:CUDAVER.Remove($env:CUDAVER.LastIndexOf('.')).Replace('.','')
110+
$env:CUDA_PATH = $env:CONDA_PREFIX
111+
$env:CUDA_HOME = $env:CONDA_PREFIX
112+
$env:CUDA_TOOLKIT_ROOT_DIR = $env:CONDA_PREFIX
113+
if ($IsLinux) {
114+
$env:LD_LIBRARY_PATH = $env:CONDA_PREFIX + '/lib:' + $env:LD_LIBRARY_PATH
115+
}
116+
$env:VERBOSE = '1'
117+
$env:CMAKE_ARGS = '-DGGML_CUDA=on -DCMAKE_CUDA_ARCHITECTURES=all'
118+
$env:CMAKE_ARGS = "-DGGML_CUDA_FORCE_MMQ=ON $env:CMAKE_ARGS"
119+
# if ($env:AVXVER -eq 'AVX') {
120+
$env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DGGML_AVX2=off -DGGML_FMA=off -DGGML_F16C=off'
121+
# }
122+
# if ($env:AVXVER -eq 'AVX512') {
123+
# $env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DGGML_AVX512=on'
124+
# }
125+
# if ($env:AVXVER -eq 'basic') {
126+
# $env:CMAKE_ARGS = $env:CMAKE_ARGS + ' -DGGML_AVX=off -DGGML_AVX2=off -DGGML_FMA=off -DGGML_F16C=off'
127+
# }
128+
python -m build --wheel
129+
# write the build tag to the output
130+
Write-Output "CUDA_VERSION=$cudaVersion" >> $env:GITHUB_ENV
131+
132+
- uses: softprops/action-gh-release@v2
133+
with:
134+
files: dist/*
135+
# Set tag_name to <tag>-cu<cuda_version>
136+
tag_name: ${{ github.ref_name }}-cu${{ env.CUDA_VERSION }}
137+
env:
138+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Build Wheels (Metal)
2+
3+
on: workflow_dispatch
4+
5+
permissions:
6+
contents: write
7+
8+
jobs:
9+
build_wheels:
10+
name: Build wheels on ${{ matrix.os }}
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
matrix:
14+
os: [macos-13, macos-14, macos-15]
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
with:
19+
submodules: "recursive"
20+
21+
# Used to host cibuildwheel
22+
- uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.12"
25+
cache: 'pip'
26+
27+
- name: Install dependencies (Linux/MacOS)
28+
if: runner.os != 'Windows'
29+
run: |
30+
python -m pip install --upgrade pip
31+
python -m pip install uv
32+
RUST_LOG=trace python -m uv pip install -e .[all] --verbose
33+
shell: bash
34+
35+
- name: Install dependencies (Windows)
36+
if: runner.os == 'Windows'
37+
env:
38+
RUST_LOG: trace
39+
run: |
40+
python -m pip install --upgrade pip
41+
python -m pip install uv
42+
python -m uv pip install -e .[all] --verbose
43+
shell: cmd
44+
45+
- name: Build wheels
46+
uses: pypa/cibuildwheel@v2.22.0
47+
env:
48+
# disable repair
49+
CIBW_REPAIR_WHEEL_COMMAND: ""
50+
CIBW_ARCHS: "arm64"
51+
CIBW_ENVIRONMENT: CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DGGML_METAL=on"
52+
CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-*"
53+
with:
54+
package-dir: .
55+
output-dir: wheelhouse2
56+
57+
- uses: actions/upload-artifact@v4
58+
with:
59+
name: wheels-mac_${{ matrix.os }}
60+
path: ./wheelhouse2/*.whl
61+
62+
release:
63+
name: Release
64+
needs: [build_wheels]
65+
runs-on: ubuntu-latest
66+
67+
steps:
68+
- uses: actions/download-artifact@v4
69+
with:
70+
merge-multiple: true
71+
path: dist2
72+
73+
- uses: softprops/action-gh-release@v2
74+
with:
75+
files: dist2/*
76+
# set release name to <tag>-metal
77+
tag_name: ${{ github.ref_name }}-metal
78+
env:
79+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)