xref: /aosp_15_r20/external/pytorch/.ci/docker/manywheel/build.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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