@@ -13,124 +13,34 @@ jobs:
13
13
aarch64-linux-gnu-cuda :
14
14
runs-on : ${{ matrix.pair.runner }}
15
15
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"
25
19
strategy :
26
20
fail-fast : false
27
21
matrix :
28
22
include :
29
23
- pair :
30
24
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
35
26
cuda_id : " 12"
36
27
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"
39
33
40
34
name : aarch64-linux-gnu-cuda${{ matrix.pair.cuda_id }}-cudnn${{ matrix.pair.cudnn_id }}
41
35
steps :
42
36
- name : Checkout
43
37
uses : actions/checkout@v4
44
38
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
-
106
39
- name : Mix compile (with contrib modules)
107
40
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}"
134
44
135
45
- uses : softprops/action-gh-release@v2
136
46
with :
0 commit comments