Test aarch64 #99
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Package ITKCudaCommon with CUDA' | |
on: [push,pull_request] | |
env: | |
itk-wheel-tag: 'v5.4.0' | |
itk-python-package-tag: 'v5.4.0' | |
itk-python-package-org: 'InsightSoftwareConsortium' | |
jobs: | |
build-linux-cuda-python-packages: | |
runs-on: self-hosted-linux | |
strategy: | |
max-parallel: 2 | |
matrix: | |
python3-minor-version: ["8","9","10","11"] | |
manylinux-platform: ["_2_28-aarch64"] | |
cuda-version: ["116","121"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: 'Fetch build script' | |
run: | | |
IPP_DOWNLOAD_GIT_TAG=${{ env.itk-python-package-tag }} | |
IPP_DOWNLOAD_ORG=${{ env.itk-python-package-org }} | |
curl -L https://raw.githubusercontent.com/${IPP_DOWNLOAD_ORG:=InsightSoftwareConsortium}/ITKPythonPackage/${IPP_DOWNLOAD_GIT_TAG:=master}/scripts/dockcross-manylinux-download-cache-and-build-module-wheels.sh -O | |
chmod u+x dockcross-manylinux-download-cache-and-build-module-wheels.sh | |
- name: 'Build 🐍 Python 📦 package' | |
shell: bash | |
run: | | |
rm -rf dist | |
export ITK_PACKAGE_VERSION=${{ env.itk-wheel-tag }} | |
export ITKPYTHONPACKAGE_TAG=${{ env.itk-python-package-tag }} | |
export ITKPYTHONPACKAGE_ORG=${{ env.itk-python-package-org }} | |
export ITK_MODULE_PREQ=${{ env.itk-module-deps }} | |
export CUDA_VERSION=${{ matrix.cuda-version }} | |
export CUDA_VERSION_MAJOR=`(echo ${CUDA_VERSION} | cut -b1-2)` | |
export CUDA_VERSION_MINOR=`(echo ${CUDA_VERSION} | cut -b3-)` | |
CMAKE_OPTIONS="-DCUDACOMMON_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" | |
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCUDAToolkit_ROOT=/usr/lib64/cuda${CUDA_VERSION}" | |
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CUDA_COMPILER=/usr/lib64/cuda${CUDA_VERSION}/bin/nvcc" | |
# The first two are not library paths but are included to be mounted in the | |
# docker by dockcross-manylinux-build-module-wheels.sh | |
export LD_LIBRARY_PATH="/home/srit/Downloads/cuda${CUDA_VERSION}" | |
export LD_LIBRARY_PATH="/usr/lib64/libcuda.so.1:$LD_LIBRARY_PATH" | |
export LD_LIBRARY_PATH="/home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib:$LD_LIBRARY_PATH" | |
if test -e ../../ITKPythonBuilds-linux-manylinux2014.tar.zst ; then | |
mv ../../*zst . | |
fi | |
MANYLINUX_PLATFORM=${{ matrix.manylinux-platform }} | |
if test ${MANYLINUX_PLATFORM} == "_2_28-x64" && test ${CUDA_VERSION} -lt 120; then | |
export IMAGE_TAG=20230106-1aeaea0 | |
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DITK_USE_PYTHON_LIMITED_API=FALSE" | |
elif test ${MANYLINUX_PLATFORM} == "_2_28-aarch64"; then | |
export NO_SUDO=true | |
fi | |
CMAKE_OPTIONS=(--cmake_options "${CMAKE_OPTIONS}") | |
echo "Manylinux platform ${MANYLINUX_PLATFORM}" | |
rm -rf ITKPythonPackage | |
export MANYLINUX_VERSION=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 1)` | |
export TARGET_ARCH=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 2)` | |
export ITK_MODULE_NO_CLEANUP=TRUE | |
echo "Building for manylinux specialization ${MANYLINUX_VERSION} and target architecture ${TARGET_ARCH}" | |
LIBCUDART=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcudart.so.${CUDA_VERSION_MAJOR}*` | |
./dockcross-manylinux-download-cache-and-build-module-wheels.sh "${CMAKE_OPTIONS[@]}" -x "libcuda.so.1;${LIBCUDART}" cp3${{ matrix.python3-minor-version }} | |
mv *zst ../.. | |
- name: Validate build output | |
shell: bash | |
run: | | |
/home/srit/miniconda3/envs/py310/bin/python -m pip install twine | |
ls dist/ | |
MANYLINUX_PLATFORM=${{ matrix.manylinux-platform }} | |
MANYLINUX_VERSION=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 1)` | |
TARGET_ARCH_NAME=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 2)` | |
if [[ ${TARGET_ARCH_NAME} == "x64" ]]; then | |
TARGET_ARCH_NAME="x86_64" # Match auditwheel naming convention | |
fi | |
WHEEL_PATTERN="dist/itk_*cp3${{ matrix.python3-minor-version }}*manylinux${MANYLINUX_VERSION}*${TARGET_ARCH_NAME}.whl" | |
echo "Searching for wheels matching pattern ${WHEEL_PATTERN}" | |
/home/srit/miniconda3/envs/py310/bin/python -m twine check ${WHEEL_PATTERN} | |
- name: Publish Python package as GitHub Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: LinuxWheel3${{ matrix.python3-minor-version }}${{ matrix.manylinux-platform }}-cuda${{ matrix.cuda-version }} | |
path: dist/*.whl | |
publish-python-packages-to-pypi: | |
needs: | |
- build-linux-cuda-python-packages | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Download Python Packages | |
uses: actions/download-artifact@v4 | |
- name: Prepare packages for upload | |
run: | | |
ls -R | |
for d in */; do | |
mv ${d}/*.whl . | |
done | |
mkdir dist | |
mv *.whl dist/ | |
ls dist | |
- name: Publish 🐍 Python 📦 package to PyPI | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: pypa/[email protected] | |
with: | |
skip_existing: true | |
user: __token__ | |
password: ${{ secrets.pypi_password }} |