Skip to content

Commit 78d93ad

Browse files
brandoninmsaroufim
andauthored
Add aarch64 Linux support (DGX Spark / GB10) (#51)
* Add aarch64 Linux support (DGX Spark / GB10) - Add aarch64-unknown-linux-gnu build target to the release workflow - Add .cargo/config.toml to configure the cross-linker for aarch64 - Update install.sh to detect arm64/aarch64 and download the correct binary (popcorn-cli-linux-aarch64.tar.gz) instead of the x86-64 build * validate arm64 installer in CI * move arm64 validation into test workflow * fold arm64 into test matrix * build arm64 release on native runner --------- Co-authored-by: brandonin <brandonin@users.noreply.github.com> Co-authored-by: Mark Saroufim <marksaroufim@gmail.com>
1 parent b94cc1a commit 78d93ad

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

.github/workflows/build.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ jobs:
5858
compress_cmd: tar -czf
5959
compress_ext: .tar.gz
6060

61+
- os: ubuntu-24.04-arm
62+
target: aarch64-unknown-linux-gnu
63+
artifact_name: popcorn-cli
64+
asset_name: popcorn-cli-linux-aarch64.tar.gz
65+
compress_cmd: tar -czf
66+
compress_ext: .tar.gz
67+
6168
steps:
6269
- uses: actions/checkout@v4
6370

@@ -72,12 +79,6 @@ jobs:
7279
with:
7380
key: ${{ matrix.target }}
7481

75-
- name: Install cross-compilation dependencies (Linux ARM)
76-
if: matrix.target == 'aarch64-unknown-linux-gnu'
77-
run: |
78-
sudo apt-get update
79-
sudo apt-get install -y gcc-aarch64-linux-gnu
80-
8182
- name: Install musl tools (Linux musl)
8283
if: matrix.target == 'x86_64-unknown-linux-musl'
8384
run: |
@@ -126,6 +127,7 @@ jobs:
126127
name: Release ${{ needs.version.outputs.new_tag }}
127128
files: |
128129
popcorn-cli-linux.tar.gz/popcorn-cli-linux.tar.gz
130+
popcorn-cli-linux-aarch64.tar.gz/popcorn-cli-linux-aarch64.tar.gz
129131
popcorn-cli-windows.zip/popcorn-cli-windows.zip
130132
popcorn-cli-macos.tar.gz/popcorn-cli-macos.tar.gz
131133
env:

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: ${{ matrix.os }}
1616
strategy:
1717
matrix:
18-
os: [ubuntu-latest, macos-latest, windows-latest]
18+
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
1919
rust: [stable]
2020

2121
steps:

install.sh

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@ SYMLINK_NAME=""
2828
EXTENSION=""
2929

3030
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
31-
OS="linux"
31+
ARCH=$(uname -m)
32+
if [[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]]; then
33+
OS="linux-aarch64"
34+
else
35+
OS="linux"
36+
fi
3237
EXTENSION=".tar.gz"
3338
BINARY_NAME="popcorn-cli"
3439
SYMLINK_NAME="popcorn"
@@ -47,7 +52,7 @@ else
4752
exit 1
4853
fi
4954

50-
echo "✅ Detected OS: $OS"
55+
echo "✅ Detected OS: $OS ($(uname -m))"
5156

5257
# Download URL
5358
DOWNLOAD_URL="https://github.com/gpu-mode/popcorn-cli/releases/latest/download/popcorn-cli-${OS}${EXTENSION}"
@@ -149,4 +154,4 @@ echo " - ✅ All modes available: test, benchmark, leaderboard, profile"
149154
echo " - ✅ Clean user identification"
150155
echo ""
151156
echo "💡 Need help? Run: popcorn-cli --help"
152-
echo "🔗 Example: popcorn-cli submit --gpu MI300 --leaderboard amd-fp8-mm --mode test example.py"
157+
echo "🔗 Example: popcorn-cli submit --gpu MI300 --leaderboard amd-fp8-mm --mode test example.py"

0 commit comments

Comments
 (0)