Skip to content

Commit f6286b0

Browse files
committed
build aarch64-linux-gnu-cuda with self-hosted-aarch64-linux-gnu
1 parent b5241a5 commit f6286b0

File tree

1 file changed

+12
-102
lines changed

1 file changed

+12
-102
lines changed

.github/workflows/linux-precompile-aarch64-cuda-gnu.yml

+12-102
Original file line numberDiff line numberDiff line change
@@ -13,124 +13,34 @@ jobs:
1313
aarch64-linux-gnu-cuda:
1414
runs-on: ${{ matrix.pair.runner }}
1515
env:
16-
OPENCV_VER: "4.10.0"
17-
MIX_ENV: prod
18-
ELIXIR_VERSION: "1.16"
19-
OTP_VERSION: "25"
20-
NIF_VERSION: "2.16"
21-
EVISION_PREFER_PRECOMPILED: "false"
22-
EVISION_GENERATE_LANG: "erlang,elixir"
23-
EVISION_ENABLE_CUDA: "true"
24-
EVISION_ENABLE_CONTRIB: "true"
16+
OTP_VERSION: "25.3.2.12"
17+
ELIXIR_VERSION: "1.16.1"
18+
TRIPLET: "aarch64-linux-gnu"
2519
strategy:
2620
fail-fast: false
2721
matrix:
2822
include:
2923
- pair:
3024
arch: aarch64-linux-gnu
31-
cmake_toolchain_file: "cc_toolchain/aarch64-linux-gnu.cmake"
32-
c_compiler: aarch64-linux-gnu-gcc
33-
cpp_compiler: aarch64-linux-gnu-g++
34-
runner: ubuntu-22.04
25+
runner: self-hosted-aarch64-linux-gnu
3526
cuda_id: "12"
3627
cudnn_id: "9"
37-
cuda_local_installer: "https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-cross-aarch64-ubuntu2204-12-5-local_12.5.1-1_all.deb"
38-
cudnn_local_installer: "https://developer.download.nvidia.com/compute/cudnn/9.2.0/local_installers/cudnn-local-repo-cross-aarch64-ubuntu2204-9.2.0_1.0-1_all.deb"
28+
cuda_pin: "https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/sbsa/cuda-ubuntu2004.pin"
29+
cuda_deb: "https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-ubuntu2004-12-5-local_12.5.1-555.42.06-1_arm64.deb"
30+
cuda_toolkit: "cuda-toolkit-12-5"
31+
cudnn_deb: "https://developer.download.nvidia.com/compute/cudnn/9.2.0/local_installers/cudnn-local-repo-ubuntu2004-9.2.0_1.0-1_arm64.deb"
32+
cudnn_package: "cudnn-cuda-12"
3933

4034
name: aarch64-linux-gnu-cuda${{ matrix.pair.cuda_id }}-cudnn${{ matrix.pair.cudnn_id }}
4135
steps:
4236
- name: Checkout
4337
uses: actions/checkout@v4
4438

45-
- uses: erlef/setup-beam@v1
46-
with:
47-
otp-version: ${{ env.OTP_VERSION }}
48-
elixir-version: ${{ env.ELIXIR_VERSION }}
49-
50-
- name: Download CUDA and cudnn Installer for Linux Ubuntu aarch64-jetson
51-
run: |
52-
curl -fSL "${{ matrix.pair.cuda_local_installer }}" -o cuda-repo-cross-aarch64-all.deb
53-
sudo dpkg -i cuda-repo-cross-aarch64-all.deb
54-
sudo cp /var/cuda-repo-cross-aarch64*/cuda-*-keyring.gpg /usr/share/keyrings/
55-
sudo apt-get update -q
56-
sudo apt-get -y install cuda-cross-aarch64
57-
sudo rm -rf cuda-repo-cross-aarch64-all.deb
58-
59-
curl -fSL "${{ matrix.pair.cudnn_local_installer }}" -o cudnn-local-repo-cross-aarch64-all.deb
60-
sudo dpkg -i cudnn-local-repo-cross-aarch64-all.deb
61-
sudo cp /var/cudnn-local-repo-cross-aarch64-*/cudnn-*-keyring.gpg /usr/share/keyrings/
62-
sudo apt-get update -q
63-
sudo apt-get -y install cudnn-cross-aarch64
64-
sudo rm -rf cudnn-local-repo-cross-aarch64-all.deb
65-
66-
- name: Install system dependencies
67-
run: |
68-
sudo apt-get update -q
69-
sudo apt-get install -y build-essential automake autoconf pkg-config bc m4 unzip zip curl git gzip python3 ca-certificates libncurses5-dev libssl-dev libeigen3-dev
70-
71-
- name: Cache mix packages
72-
id: cache-mix-deps
73-
uses: actions/cache@v4
74-
with:
75-
key: deps-${{ hashFiles('mix.lock') }}-${{ matrix.pair.OTP_VERSION }}-${{ env.ELIXIR_VERSION }}
76-
path: |
77-
./deps
78-
79-
- name: Get mix deps
80-
if: steps.cache-mix-deps.outputs.cache-hit != 'true'
81-
run: |
82-
mix deps.get
83-
84-
- name: Cache OpenCV source code
85-
id: cache-opencv
86-
uses: actions/cache@v4
87-
with:
88-
key: opencv-with-contrib-${{ env.OPENCV_VER }}
89-
path: |
90-
./3rd_party
91-
92-
- name: Download OpenCV source code
93-
if: steps.cache-opencv.outputs.cache-hit != 'true'
94-
run: |
95-
bash scripts/download_opencv.sh ${OPENCV_VER} 3rd_party/cache 3rd_party/opencv/
96-
bash scripts/download_opencv_contrib.sh ${OPENCV_VER} 3rd_party/cache 3rd_party/opencv/
97-
98-
- name: Compile OpenCV (with contrib modules)
99-
run: |
100-
if [ "${{ matrix.pair.cmake_toolchain_file }}" != "" ]; then
101-
export CMAKE_TOOLCHAIN_FILE="$(pwd)/${{ matrix.pair.cmake_toolchain_file }}"
102-
fi
103-
rm -rf "./_build/${{ env.MIX_ENV }}/lib/evision"
104-
mix compile_opencv
105-
10639
- name: Mix compile (with contrib modules)
10740
run: |
108-
if [ "${{ matrix.pair.cmake_toolchain_file }}" != "" ]; then
109-
export CMAKE_TOOLCHAIN_FILE="$(pwd)/${{ matrix.pair.cmake_toolchain_file }}"
110-
fi
111-
rm -f _build/${MIX_ENV}/lib/evision/priv/evision.so
112-
rm -rf lib/generated && rm -rf src/generated
113-
mkdir -p lib/generated && mkdir -p src/generated
114-
mix compile
115-
116-
- name: Create precompiled library (with contrib modules)
117-
run: |
118-
export PKG_NAME=evision-nif_${{ matrix.pair.NIF_VERSION }}-${{ matrix.pair.arch }}-contrib-cuda${{ matrix.pair.cuda_id }}-cudnn${{ matrix.pair.cudnn_id }}-${GITHUB_REF##*/v}
119-
mkdir -p "${PKG_NAME}"
120-
121-
export PRIV_DIR="$(pwd)/_build/${MIX_ENV}/lib/evision/priv"
122-
mv "${PRIV_DIR}/include" /tmp/include
123-
cp -a "${PRIV_DIR}" "${PKG_NAME}"
124-
cp -a lib/generated "${PKG_NAME}/elixir_generated"
125-
cp -a src/generated "${PKG_NAME}/erlang_generated"
126-
tar -czf "${PKG_NAME}.tar.gz" "${PKG_NAME}"
127-
rm -rf "${PKG_NAME}"
128-
ls -lah "${PKG_NAME}.tar.gz"
129-
mkdir -p artifacts
130-
mv "${PKG_NAME}.tar.gz" artifacts
131-
cd artifacts
132-
sha256sum "${PKG_NAME}.tar.gz" | tee "${PKG_NAME}.tar.gz.sha256"
133-
mv /tmp/include "${PRIV_DIR}/include"
41+
cp .github/scripts/*.sh .
42+
chmod +x *.sh
43+
./script-to-build-gnu.sh "${{ matrix.pair.cuda_pin }}" "${{ matrix.pair.cuda_deb }}" "${{ matrix.pair.cuda_toolkit }}" "${{ matrix.pair.cuda_id }}" "${{ matrix.pair.cudnn_deb }}" "${{ matrix.pair.cudnn_package }}" "${{ matrix.pair.cudnn_id }}" "${{ env.OTP_VERSION }}" "${{ env.ELIXIR_VERSION }}" "${{ env.TRIPLET }}" "${GITHUB_REF}"
13444
13545
- uses: softprops/action-gh-release@v2
13646
with:

0 commit comments

Comments
 (0)