Skip to content

Commit b2ff1ce

Browse files
Copilotmudler
andauthored
feat: enable Vulkan arm64 image builds (#7912)
* Initial plan * Add arm64 support for Vulkan builds in Dockerfiles and workflows Co-authored-by: mudler <2420543+mudler@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
1 parent b964b3d commit b2ff1ce

7 files changed

Lines changed: 137 additions & 77 deletions

File tree

.github/workflows/backend.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,7 @@ jobs:
908908
- build-type: 'vulkan'
909909
cuda-major-version: ""
910910
cuda-minor-version: ""
911-
platforms: 'linux/amd64'
911+
platforms: 'linux/amd64,linux/arm64'
912912
tag-latest: 'auto'
913913
tag-suffix: '-gpu-vulkan-llama-cpp'
914914
runs-on: 'ubuntu-latest'
@@ -961,7 +961,7 @@ jobs:
961961
- build-type: 'vulkan'
962962
cuda-major-version: ""
963963
cuda-minor-version: ""
964-
platforms: 'linux/amd64'
964+
platforms: 'linux/amd64,linux/arm64'
965965
tag-latest: 'auto'
966966
tag-suffix: '-gpu-vulkan-stablediffusion-ggml'
967967
runs-on: 'ubuntu-latest'
@@ -1027,7 +1027,7 @@ jobs:
10271027
- build-type: 'vulkan'
10281028
cuda-major-version: ""
10291029
cuda-minor-version: ""
1030-
platforms: 'linux/amd64'
1030+
platforms: 'linux/amd64,linux/arm64'
10311031
tag-latest: 'auto'
10321032
tag-suffix: '-gpu-vulkan-whisper'
10331033
runs-on: 'ubuntu-latest'

.github/workflows/image-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
makeflags: "--jobs=3 --output-sync=target"
7575
ubuntu-version: '2404'
7676
- build-type: 'vulkan'
77-
platforms: 'linux/amd64'
77+
platforms: 'linux/amd64,linux/arm64'
7878
tag-latest: 'false'
7979
tag-suffix: '-vulkan-core'
8080
runs-on: 'ubuntu-latest'

.github/workflows/image.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
ubuntu-version: '2404'
114114
ubuntu-codename: 'noble'
115115
- build-type: 'vulkan'
116-
platforms: 'linux/amd64'
116+
platforms: 'linux/amd64,linux/arm64'
117117
tag-latest: 'auto'
118118
tag-suffix: '-gpu-vulkan'
119119
runs-on: 'ubuntu-latest'

Dockerfile

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,39 @@ RUN <<EOT bash
4040
libwayland-dev libxrandr-dev libxcb-randr0-dev libxcb-ewmh-dev \
4141
git python-is-python3 bison libx11-xcb-dev liblz4-dev libzstd-dev \
4242
ocaml-core ninja-build pkg-config libxml2-dev wayland-protocols python3-jsonschema \
43-
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils mesa-vulkan-drivers && \
44-
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
45-
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
46-
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
47-
mkdir -p /opt/vulkan-sdk && \
48-
mv 1.4.328.1 /opt/vulkan-sdk/ && \
49-
cd /opt/vulkan-sdk/1.4.328.1 && \
50-
./vulkansdk --no-deps --maxjobs \
51-
vulkan-loader \
52-
vulkan-validationlayers \
53-
vulkan-extensionlayer \
54-
vulkan-tools \
55-
shaderc && \
56-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
57-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
58-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
59-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
60-
rm -rf /opt/vulkan-sdk && \
43+
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils mesa-vulkan-drivers
44+
if [ "amd64" = "$TARGETARCH" ]; then
45+
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
46+
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
47+
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
48+
mkdir -p /opt/vulkan-sdk && \
49+
mv 1.4.328.1 /opt/vulkan-sdk/ && \
50+
cd /opt/vulkan-sdk/1.4.328.1 && \
51+
./vulkansdk --no-deps --maxjobs \
52+
vulkan-loader \
53+
vulkan-validationlayers \
54+
vulkan-extensionlayer \
55+
vulkan-tools \
56+
shaderc && \
57+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
58+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
59+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
60+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
61+
rm -rf /opt/vulkan-sdk
62+
fi
63+
if [ "arm64" = "$TARGETARCH" ]; then
64+
mkdir vulkan && cd vulkan && \
65+
curl -L -o vulkan-sdk.tar.xz https://github.com/mudler/vulkan-sdk-arm/releases/download/1.4.335.0/vulkansdk-ubuntu-24.04-arm-1.4.335.0.tar.xz && \
66+
tar -xvf vulkan-sdk.tar.xz && \
67+
rm vulkan-sdk.tar.xz && \
68+
cd 1.4.335.0 && \
69+
cp -rfv aarch64/bin/* /usr/bin/ && \
70+
cp -rfv aarch64/lib/* /usr/lib/aarch64-linux-gnu/ && \
71+
cp -rfv aarch64/include/* /usr/include/ && \
72+
cp -rfv aarch64/share/* /usr/share/ && \
73+
cd ../.. && \
74+
rm -rf vulkan
75+
fi
6176
ldconfig && \
6277
apt-get clean && \
6378
rm -rf /var/lib/apt/lists/* && \

backend/Dockerfile.golang

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,39 @@ RUN <<EOT bash
4545
libwayland-dev libxrandr-dev libxcb-randr0-dev libxcb-ewmh-dev \
4646
git python-is-python3 bison libx11-xcb-dev liblz4-dev libzstd-dev \
4747
ocaml-core ninja-build pkg-config libxml2-dev wayland-protocols python3-jsonschema \
48-
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils && \
49-
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
50-
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
51-
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
52-
mkdir -p /opt/vulkan-sdk && \
53-
mv 1.4.328.1 /opt/vulkan-sdk/ && \
54-
cd /opt/vulkan-sdk/1.4.328.1 && \
55-
./vulkansdk --no-deps --maxjobs \
56-
vulkan-loader \
57-
vulkan-validationlayers \
58-
vulkan-extensionlayer \
59-
vulkan-tools \
60-
shaderc && \
61-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
62-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
63-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
64-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
65-
rm -rf /opt/vulkan-sdk && \
48+
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils
49+
if [ "amd64" = "$TARGETARCH" ]; then
50+
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
51+
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
52+
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
53+
mkdir -p /opt/vulkan-sdk && \
54+
mv 1.4.328.1 /opt/vulkan-sdk/ && \
55+
cd /opt/vulkan-sdk/1.4.328.1 && \
56+
./vulkansdk --no-deps --maxjobs \
57+
vulkan-loader \
58+
vulkan-validationlayers \
59+
vulkan-extensionlayer \
60+
vulkan-tools \
61+
shaderc && \
62+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
63+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
64+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
65+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
66+
rm -rf /opt/vulkan-sdk
67+
fi
68+
if [ "arm64" = "$TARGETARCH" ]; then
69+
mkdir vulkan && cd vulkan && \
70+
curl -L -o vulkan-sdk.tar.xz https://github.com/mudler/vulkan-sdk-arm/releases/download/1.4.335.0/vulkansdk-ubuntu-24.04-arm-1.4.335.0.tar.xz && \
71+
tar -xvf vulkan-sdk.tar.xz && \
72+
rm vulkan-sdk.tar.xz && \
73+
cd 1.4.335.0 && \
74+
cp -rfv aarch64/bin/* /usr/bin/ && \
75+
cp -rfv aarch64/lib/* /usr/lib/aarch64-linux-gnu/ && \
76+
cp -rfv aarch64/include/* /usr/include/ && \
77+
cp -rfv aarch64/share/* /usr/share/ && \
78+
cd ../.. && \
79+
rm -rf vulkan
80+
fi
6681
ldconfig && \
6782
apt-get clean && \
6883
rm -rf /var/lib/apt/lists/*

backend/Dockerfile.llama-cpp

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -102,24 +102,39 @@ RUN <<EOT bash
102102
libwayland-dev libxrandr-dev libxcb-randr0-dev libxcb-ewmh-dev \
103103
git python-is-python3 bison libx11-xcb-dev liblz4-dev libzstd-dev \
104104
ocaml-core ninja-build pkg-config libxml2-dev wayland-protocols python3-jsonschema \
105-
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils && \
106-
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
107-
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
108-
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
109-
mkdir -p /opt/vulkan-sdk && \
110-
mv 1.4.328.1 /opt/vulkan-sdk/ && \
111-
cd /opt/vulkan-sdk/1.4.328.1 && \
112-
./vulkansdk --no-deps --maxjobs \
113-
vulkan-loader \
114-
vulkan-validationlayers \
115-
vulkan-extensionlayer \
116-
vulkan-tools \
117-
shaderc && \
118-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
119-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
120-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
121-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
122-
rm -rf /opt/vulkan-sdk && \
105+
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils
106+
if [ "amd64" = "$TARGETARCH" ]; then
107+
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
108+
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
109+
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
110+
mkdir -p /opt/vulkan-sdk && \
111+
mv 1.4.328.1 /opt/vulkan-sdk/ && \
112+
cd /opt/vulkan-sdk/1.4.328.1 && \
113+
./vulkansdk --no-deps --maxjobs \
114+
vulkan-loader \
115+
vulkan-validationlayers \
116+
vulkan-extensionlayer \
117+
vulkan-tools \
118+
shaderc && \
119+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
120+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
121+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
122+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
123+
rm -rf /opt/vulkan-sdk
124+
fi
125+
if [ "arm64" = "$TARGETARCH" ]; then
126+
mkdir vulkan && cd vulkan && \
127+
curl -L -o vulkan-sdk.tar.xz https://github.com/mudler/vulkan-sdk-arm/releases/download/1.4.335.0/vulkansdk-ubuntu-24.04-arm-1.4.335.0.tar.xz && \
128+
tar -xvf vulkan-sdk.tar.xz && \
129+
rm vulkan-sdk.tar.xz && \
130+
cd 1.4.335.0 && \
131+
cp -rfv aarch64/bin/* /usr/bin/ && \
132+
cp -rfv aarch64/lib/* /usr/lib/aarch64-linux-gnu/ && \
133+
cp -rfv aarch64/include/* /usr/include/ && \
134+
cp -rfv aarch64/share/* /usr/share/ && \
135+
cd ../.. && \
136+
rm -rf vulkan
137+
fi
123138
ldconfig && \
124139
apt-get clean && \
125140
rm -rf /var/lib/apt/lists/*

backend/Dockerfile.python

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,39 @@ RUN <<EOT bash
5959
libwayland-dev libxrandr-dev libxcb-randr0-dev libxcb-ewmh-dev \
6060
git python-is-python3 bison libx11-xcb-dev liblz4-dev libzstd-dev \
6161
ocaml-core ninja-build pkg-config libxml2-dev wayland-protocols python3-jsonschema \
62-
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils && \
63-
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
64-
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
65-
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
66-
mkdir -p /opt/vulkan-sdk && \
67-
mv 1.4.328.1 /opt/vulkan-sdk/ && \
68-
cd /opt/vulkan-sdk/1.4.328.1 && \
69-
./vulkansdk --no-deps --maxjobs \
70-
vulkan-loader \
71-
vulkan-validationlayers \
72-
vulkan-extensionlayer \
73-
vulkan-tools \
74-
shaderc && \
75-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
76-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
77-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
78-
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
79-
rm -rf /opt/vulkan-sdk && \
62+
clang-format qtbase5-dev qt6-base-dev libxcb-glx0-dev sudo xz-utils
63+
if [ "amd64" = "$TARGETARCH" ]; then
64+
wget "https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz" && \
65+
tar -xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
66+
rm vulkansdk-linux-x86_64-1.4.328.1.tar.xz && \
67+
mkdir -p /opt/vulkan-sdk && \
68+
mv 1.4.328.1 /opt/vulkan-sdk/ && \
69+
cd /opt/vulkan-sdk/1.4.328.1 && \
70+
./vulkansdk --no-deps --maxjobs \
71+
vulkan-loader \
72+
vulkan-validationlayers \
73+
vulkan-extensionlayer \
74+
vulkan-tools \
75+
shaderc && \
76+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/bin/* /usr/bin/ && \
77+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/lib/* /usr/lib/x86_64-linux-gnu/ && \
78+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/include/* /usr/include/ && \
79+
cp -rfv /opt/vulkan-sdk/1.4.328.1/x86_64/share/* /usr/share/ && \
80+
rm -rf /opt/vulkan-sdk
81+
fi
82+
if [ "arm64" = "$TARGETARCH" ]; then
83+
mkdir vulkan && cd vulkan && \
84+
curl -L -o vulkan-sdk.tar.xz https://github.com/mudler/vulkan-sdk-arm/releases/download/1.4.335.0/vulkansdk-ubuntu-24.04-arm-1.4.335.0.tar.xz && \
85+
tar -xvf vulkan-sdk.tar.xz && \
86+
rm vulkan-sdk.tar.xz && \
87+
cd 1.4.335.0 && \
88+
cp -rfv aarch64/bin/* /usr/bin/ && \
89+
cp -rfv aarch64/lib/* /usr/lib/aarch64-linux-gnu/ && \
90+
cp -rfv aarch64/include/* /usr/include/ && \
91+
cp -rfv aarch64/share/* /usr/share/ && \
92+
cd ../.. && \
93+
rm -rf vulkan
94+
fi
8095
ldconfig && \
8196
apt-get clean && \
8297
rm -rf /var/lib/apt/lists/*

0 commit comments

Comments
 (0)