1*da0073e9SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*da0073e9SAndroid Build Coastguard Worker# Script used only in CD pipeline 3*da0073e9SAndroid Build Coastguard Worker 4*da0073e9SAndroid Build Coastguard Workerset -eou pipefail 5*da0073e9SAndroid Build Coastguard Worker 6*da0073e9SAndroid Build Coastguard WorkerTOPDIR=$(git rev-parse --show-toplevel) 7*da0073e9SAndroid Build Coastguard Worker 8*da0073e9SAndroid Build Coastguard Workerimage="$1" 9*da0073e9SAndroid Build Coastguard Workershift 10*da0073e9SAndroid Build Coastguard Worker 11*da0073e9SAndroid Build Coastguard Workerif [ -z "${image}" ]; then 12*da0073e9SAndroid Build Coastguard Worker echo "Usage: $0 IMAGE" 13*da0073e9SAndroid Build Coastguard Worker exit 1 14*da0073e9SAndroid Build Coastguard Workerfi 15*da0073e9SAndroid Build Coastguard Worker 16*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE="pytorch/${image}" 17*da0073e9SAndroid Build Coastguard Worker 18*da0073e9SAndroid Build Coastguard WorkerDOCKER_REGISTRY="${DOCKER_REGISTRY:-docker.io}" 19*da0073e9SAndroid Build Coastguard Worker 20*da0073e9SAndroid Build Coastguard WorkerGPU_ARCH_TYPE=${GPU_ARCH_TYPE:-cpu} 21*da0073e9SAndroid Build Coastguard WorkerGPU_ARCH_VERSION=${GPU_ARCH_VERSION:-} 22*da0073e9SAndroid Build Coastguard WorkerMANY_LINUX_VERSION=${MANY_LINUX_VERSION:-} 23*da0073e9SAndroid Build Coastguard WorkerDOCKERFILE_SUFFIX=${DOCKERFILE_SUFFIX:-} 24*da0073e9SAndroid Build Coastguard WorkerWITH_PUSH=${WITH_PUSH:-} 25*da0073e9SAndroid Build Coastguard Worker 26*da0073e9SAndroid Build Coastguard Workercase ${GPU_ARCH_TYPE} in 27*da0073e9SAndroid Build Coastguard Worker cpu) 28*da0073e9SAndroid Build Coastguard Worker TARGET=cpu_final 29*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu 30*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=centos:7 31*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=9" 32*da0073e9SAndroid Build Coastguard Worker ;; 33*da0073e9SAndroid Build Coastguard Worker cpu-manylinux_2_28) 34*da0073e9SAndroid Build Coastguard Worker TARGET=cpu_final 35*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu 36*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=amd64/almalinux:8 37*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=11" 38*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="2_28" 39*da0073e9SAndroid Build Coastguard Worker ;; 40*da0073e9SAndroid Build Coastguard Worker cpu-aarch64) 41*da0073e9SAndroid Build Coastguard Worker TARGET=final 42*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu-aarch64 43*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=arm64v8/centos:7 44*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=10" 45*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="aarch64" 46*da0073e9SAndroid Build Coastguard Worker ;; 47*da0073e9SAndroid Build Coastguard Worker cpu-aarch64-2_28) 48*da0073e9SAndroid Build Coastguard Worker TARGET=final 49*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu-aarch64 50*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=arm64v8/almalinux:8 51*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=11" 52*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="2_28_aarch64" 53*da0073e9SAndroid Build Coastguard Worker ;; 54*da0073e9SAndroid Build Coastguard Worker cpu-cxx11-abi) 55*da0073e9SAndroid Build Coastguard Worker TARGET=final 56*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu-cxx11-abi 57*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE="" 58*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=9" 59*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="cxx11-abi" 60*da0073e9SAndroid Build Coastguard Worker ;; 61*da0073e9SAndroid Build Coastguard Worker cpu-s390x) 62*da0073e9SAndroid Build Coastguard Worker TARGET=final 63*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu-s390x 64*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=redhat/ubi9 65*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG="" 66*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="s390x" 67*da0073e9SAndroid Build Coastguard Worker ;; 68*da0073e9SAndroid Build Coastguard Worker cuda) 69*da0073e9SAndroid Build Coastguard Worker TARGET=cuda_final 70*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cuda${GPU_ARCH_VERSION} 71*da0073e9SAndroid Build Coastguard Worker # Keep this up to date with the minimum version of CUDA we currently support 72*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=centos:7 73*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=9" 74*da0073e9SAndroid Build Coastguard Worker ;; 75*da0073e9SAndroid Build Coastguard Worker cuda-manylinux_2_28) 76*da0073e9SAndroid Build Coastguard Worker TARGET=cuda_final 77*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cuda${GPU_ARCH_VERSION} 78*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=amd64/almalinux:8 79*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=11" 80*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="2_28" 81*da0073e9SAndroid Build Coastguard Worker ;; 82*da0073e9SAndroid Build Coastguard Worker cuda-aarch64) 83*da0073e9SAndroid Build Coastguard Worker TARGET=cuda_final 84*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cuda${GPU_ARCH_VERSION} 85*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=arm64v8/centos:7 86*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=11" 87*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="aarch64" 88*da0073e9SAndroid Build Coastguard Worker DOCKERFILE_SUFFIX="_cuda_aarch64" 89*da0073e9SAndroid Build Coastguard Worker ;; 90*da0073e9SAndroid Build Coastguard Worker rocm) 91*da0073e9SAndroid Build Coastguard Worker TARGET=rocm_final 92*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=rocm${GPU_ARCH_VERSION} 93*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=rocm/dev-centos-7:${GPU_ARCH_VERSION}-complete 94*da0073e9SAndroid Build Coastguard Worker PYTORCH_ROCM_ARCH="gfx900;gfx906;gfx908;gfx90a;gfx1030;gfx1100" 95*da0073e9SAndroid Build Coastguard Worker ROCM_REGEX="([0-9]+)\.([0-9]+)[\.]?([0-9]*)" 96*da0073e9SAndroid Build Coastguard Worker if [[ $GPU_ARCH_VERSION =~ $ROCM_REGEX ]]; then 97*da0073e9SAndroid Build Coastguard Worker ROCM_VERSION_INT=$((${BASH_REMATCH[1]}*10000 + ${BASH_REMATCH[2]}*100 + ${BASH_REMATCH[3]:-0})) 98*da0073e9SAndroid Build Coastguard Worker else 99*da0073e9SAndroid Build Coastguard Worker echo "ERROR: rocm regex failed" 100*da0073e9SAndroid Build Coastguard Worker exit 1 101*da0073e9SAndroid Build Coastguard Worker fi 102*da0073e9SAndroid Build Coastguard Worker if [[ $ROCM_VERSION_INT -ge 60000 ]]; then 103*da0073e9SAndroid Build Coastguard Worker PYTORCH_ROCM_ARCH+=";gfx942" 104*da0073e9SAndroid Build Coastguard Worker fi 105*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG="--build-arg ROCM_VERSION=${GPU_ARCH_VERSION} --build-arg PYTORCH_ROCM_ARCH=${PYTORCH_ROCM_ARCH} --build-arg DEVTOOLSET_VERSION=9" 106*da0073e9SAndroid Build Coastguard Worker ;; 107*da0073e9SAndroid Build Coastguard Worker xpu) 108*da0073e9SAndroid Build Coastguard Worker TARGET=xpu_final 109*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=xpu 110*da0073e9SAndroid Build Coastguard Worker GPU_IMAGE=amd64/almalinux:8 111*da0073e9SAndroid Build Coastguard Worker DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=11" 112*da0073e9SAndroid Build Coastguard Worker MANY_LINUX_VERSION="2_28" 113*da0073e9SAndroid Build Coastguard Worker ;; 114*da0073e9SAndroid Build Coastguard Worker *) 115*da0073e9SAndroid Build Coastguard Worker echo "ERROR: Unrecognized GPU_ARCH_TYPE: ${GPU_ARCH_TYPE}" 116*da0073e9SAndroid Build Coastguard Worker exit 1 117*da0073e9SAndroid Build Coastguard Worker ;; 118*da0073e9SAndroid Build Coastguard Workeresac 119*da0073e9SAndroid Build Coastguard Worker 120*da0073e9SAndroid Build Coastguard WorkerIMAGES='' 121*da0073e9SAndroid Build Coastguard Worker 122*da0073e9SAndroid Build Coastguard Workerif [[ -n ${MANY_LINUX_VERSION} && -z ${DOCKERFILE_SUFFIX} ]]; then 123*da0073e9SAndroid Build Coastguard Worker DOCKERFILE_SUFFIX=_${MANY_LINUX_VERSION} 124*da0073e9SAndroid Build Coastguard Workerfi 125*da0073e9SAndroid Build Coastguard Worker( 126*da0073e9SAndroid Build Coastguard Worker set -x 127*da0073e9SAndroid Build Coastguard Worker DOCKER_BUILDKIT=1 docker build \ 128*da0073e9SAndroid Build Coastguard Worker ${DOCKER_GPU_BUILD_ARG} \ 129*da0073e9SAndroid Build Coastguard Worker --build-arg "GPU_IMAGE=${GPU_IMAGE}" \ 130*da0073e9SAndroid Build Coastguard Worker --target "${TARGET}" \ 131*da0073e9SAndroid Build Coastguard Worker -t "${DOCKER_IMAGE}" \ 132*da0073e9SAndroid Build Coastguard Worker $@ \ 133*da0073e9SAndroid Build Coastguard Worker -f "${TOPDIR}/.ci/docker/manywheel/Dockerfile${DOCKERFILE_SUFFIX}" \ 134*da0073e9SAndroid Build Coastguard Worker "${TOPDIR}/.ci/docker/" 135*da0073e9SAndroid Build Coastguard Worker) 136*da0073e9SAndroid Build Coastguard Worker 137*da0073e9SAndroid Build Coastguard WorkerGITHUB_REF=${GITHUB_REF:-$(git symbolic-ref -q HEAD || git describe --tags --exact-match)} 138*da0073e9SAndroid Build Coastguard WorkerGIT_BRANCH_NAME="2.5" 139*da0073e9SAndroid Build Coastguard WorkerGIT_COMMIT_SHA=${GITHUB_SHA:-$(git rev-parse HEAD)} 140*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE_BRANCH_TAG=${DOCKER_IMAGE}-${GIT_BRANCH_NAME} 141*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE_SHA_TAG=${DOCKER_IMAGE}-${GIT_COMMIT_SHA} 142*da0073e9SAndroid Build Coastguard Worker 143*da0073e9SAndroid Build Coastguard Workerif [[ "${WITH_PUSH}" == true ]]; then 144*da0073e9SAndroid Build Coastguard Worker ( 145*da0073e9SAndroid Build Coastguard Worker set -x 146*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE}" 147*da0073e9SAndroid Build Coastguard Worker if [[ -n ${GITHUB_REF} ]]; then 148*da0073e9SAndroid Build Coastguard Worker docker tag ${DOCKER_IMAGE} ${DOCKER_IMAGE_BRANCH_TAG} 149*da0073e9SAndroid Build Coastguard Worker docker tag ${DOCKER_IMAGE} ${DOCKER_IMAGE_SHA_TAG} 150*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE_BRANCH_TAG}" 151*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE_SHA_TAG}" 152*da0073e9SAndroid Build Coastguard Worker fi 153*da0073e9SAndroid Build Coastguard Worker ) 154*da0073e9SAndroid Build Coastguard Workerfi 155