Skip to content

Commit 6ae7730

Browse files
atalmanpytorchmergebot
authored andcommitted
Use gcc13 in Manylinux 2.28 images (pytorch#152825)
Related to: pytorch#152426 Pull Request resolved: pytorch#152825 Approved by: https://github.com/malfet
1 parent 8b8051f commit 6ae7730

File tree

5 files changed

+45
-32
lines changed

5 files changed

+45
-32
lines changed

.ci/docker/manywheel/Dockerfile_2_28

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ ENV LC_ALL en_US.UTF-8
77
ENV LANG en_US.UTF-8
88
ENV LANGUAGE en_US.UTF-8
99

10-
ARG DEVTOOLSET_VERSION=11
11-
RUN yum install -y sudo wget curl perl util-linux xz bzip2 git patch which perl zlib-devel yum-utils gcc-toolset-${DEVTOOLSET_VERSION}-toolchain
10+
ARG DEVTOOLSET_VERSION=13
11+
RUN yum install -y sudo wget curl perl util-linux xz bzip2 git patch which perl zlib-devel yum-utils gcc-toolset-${DEVTOOLSET_VERSION}-gcc gcc-toolset-${DEVTOOLSET_VERSION}-gcc-c++ gcc-toolset-${DEVTOOLSET_VERSION}-gcc-gfortran gcc-toolset-${DEVTOOLSET_VERSION}-gdb
1212
ENV PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/bin:$PATH
1313
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib64:/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib:$LD_LIBRARY_PATH
1414

@@ -33,7 +33,7 @@ RUN rm -rf /opt/python/cp33-cp33m /opt/_internal/cpython-3.3.6
3333
RUN rm -rf /opt/python/cp34-cp34m /opt/_internal/cpython-3.4.6
3434

3535
FROM base as cuda
36-
ARG BASE_CUDA_VERSION=11.8
36+
ARG BASE_CUDA_VERSION=12.6
3737
# Install CUDA
3838
ADD ./common/install_cuda.sh install_cuda.sh
3939
COPY ./common/install_nccl.sh install_nccl.sh
@@ -47,7 +47,7 @@ ADD ./common/install_mkl.sh install_mkl.sh
4747
RUN bash ./install_mkl.sh && rm install_mkl.sh
4848

4949
FROM base as magma
50-
ARG BASE_CUDA_VERSION=10.2
50+
ARG BASE_CUDA_VERSION=12.6
5151
# Install magma
5252
ADD ./common/install_magma.sh install_magma.sh
5353
RUN bash ./install_magma.sh ${BASE_CUDA_VERSION} && rm install_magma.sh
@@ -64,7 +64,7 @@ ADD ./common/install_libpng.sh install_libpng.sh
6464
RUN bash ./install_libpng.sh && rm install_libpng.sh
6565

6666
FROM ${GPU_IMAGE} as common
67-
ARG DEVTOOLSET_VERSION=11
67+
ARG DEVTOOLSET_VERSION=13
6868
ENV LC_ALL en_US.UTF-8
6969
ENV LANG en_US.UTF-8
7070
ENV LANGUAGE en_US.UTF-8
@@ -87,13 +87,12 @@ RUN yum install -y \
8787
wget \
8888
which \
8989
xz \
90-
gcc-toolset-${DEVTOOLSET_VERSION}-toolchain \
91-
glibc-langpack-en
92-
RUN yum install -y \
93-
https://repo.ius.io/ius-release-el7.rpm \
94-
https://ossci-linux.s3.amazonaws.com/epel-release-7-14.noarch.rpm
90+
glibc-langpack-en \
91+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc \
92+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-c++ \
93+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-gfortran \
94+
gcc-toolset-${DEVTOOLSET_VERSION}-gdb
9595

96-
RUN yum swap -y git git236-core
9796
# git236+ would refuse to run git commands in repos owned by other users
9897
# Which causes version check to fail, as pytorch repo is bind-mounted into the image
9998
# Override this behaviour by treating every folder as safe
@@ -117,8 +116,8 @@ COPY --from=libpng /usr/local/lib/pkgconfig /usr/local/
117116
COPY --from=jni /usr/local/include/jni.h /usr/local/include/jni.h
118117

119118
FROM common as cpu_final
120-
ARG BASE_CUDA_VERSION=11.8
121-
ARG DEVTOOLSET_VERSION=11
119+
ARG BASE_CUDA_VERSION=12.6
120+
ARG DEVTOOLSET_VERSION=13
122121
# Install Anaconda
123122
ADD ./common/install_conda_docker.sh install_conda.sh
124123
RUN bash ./install_conda.sh && rm install_conda.sh

.ci/docker/manywheel/Dockerfile_2_28_aarch64

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
FROM quay.io/pypa/manylinux_2_28_aarch64 as base
22

3-
# Graviton needs GCC 10 or above for the build. GCC12 is the default version in almalinux-8.
4-
ARG GCCTOOLSET_VERSION=11
3+
ARG GCCTOOLSET_VERSION=13
54

65
# Language variabes
76
ENV LC_ALL=en_US.UTF-8
@@ -36,7 +35,10 @@ RUN yum install -y \
3635
yasm \
3736
zstd \
3837
sudo \
39-
gcc-toolset-${GCCTOOLSET_VERSION}-toolchain
38+
gcc-toolset-${GCCTOOLSET_VERSION}-gcc \
39+
gcc-toolset-${GCCTOOLSET_VERSION}-gcc-c++ \
40+
gcc-toolset-${GCCTOOLSET_VERSION}-gcc-gfortran \
41+
gcc-toolset-${GCCTOOLSET_VERSION}-gdb
4042

4143
# (optional) Install non-default Ninja version
4244
ARG NINJA_VERSION

.ci/docker/manywheel/Dockerfile_cuda_aarch64

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM quay.io/pypa/manylinux_2_28_aarch64 as base
22

33
# Cuda ARM build needs gcc 11
4-
ARG DEVTOOLSET_VERSION=11
4+
ARG DEVTOOLSET_VERSION=13
55

66
# Language variables
77
ENV LC_ALL=en_US.UTF-8
@@ -34,7 +34,10 @@ RUN yum install -y \
3434
zstd \
3535
libgomp \
3636
sudo \
37-
gcc-toolset-${DEVTOOLSET_VERSION}-toolchain
37+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc \
38+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-c++ \
39+
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-gfortran \
40+
gcc-toolset-${DEVTOOLSET_VERSION}-gdb
3841

3942
# Ensure the expected devtoolset is used
4043
ENV PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/bin:$PATH

.ci/docker/manywheel/build.sh

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ case ${image} in
3232
manylinux2_28-builder:cpu)
3333
TARGET=cpu_final
3434
GPU_IMAGE=amd64/almalinux:8
35-
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=11"
35+
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=13"
3636
MANY_LINUX_VERSION="2_28"
3737
;;
3838
manylinux2_28_aarch64-builder:cpu-aarch64)
3939
TARGET=final
4040
GPU_IMAGE=arm64v8/almalinux:8
41-
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=11 --build-arg NINJA_VERSION=1.12.1"
41+
DOCKER_GPU_BUILD_ARG=" --build-arg DEVTOOLSET_VERSION=13 --build-arg NINJA_VERSION=1.12.1"
4242
MANY_LINUX_VERSION="2_28_aarch64"
4343
;;
4444
manylinuxcxx11-abi-builder:cpu-cxx11-abi)
@@ -53,16 +53,22 @@ case ${image} in
5353
DOCKER_GPU_BUILD_ARG=""
5454
MANY_LINUX_VERSION="s390x"
5555
;;
56-
manylinux2_28-builder:cuda*)
56+
manylinux2_28-builder:cuda11*)
5757
TARGET=cuda_final
5858
GPU_IMAGE=amd64/almalinux:8
5959
DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=11"
6060
MANY_LINUX_VERSION="2_28"
6161
;;
62+
manylinux2_28-builder:cuda12*)
63+
TARGET=cuda_final
64+
GPU_IMAGE=amd64/almalinux:8
65+
DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=13"
66+
MANY_LINUX_VERSION="2_28"
67+
;;
6268
manylinuxaarch64-builder:cuda*)
6369
TARGET=cuda_final
6470
GPU_IMAGE=amd64/almalinux:8
65-
DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=11"
71+
DOCKER_GPU_BUILD_ARG="--build-arg BASE_CUDA_VERSION=${GPU_ARCH_VERSION} --build-arg DEVTOOLSET_VERSION=13"
6672
MANY_LINUX_VERSION="aarch64"
6773
DOCKERFILE_SUFFIX="_cuda_aarch64"
6874
;;

.ci/pytorch/check_binary.sh

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -302,19 +302,22 @@ except RuntimeError as e:
302302
fi
303303

304304
###############################################################################
305-
# Check for C++ ABI compatibility to GCC-11
305+
# Check for C++ ABI compatibility to GCC-11 - GCC 13
306306
###############################################################################
307307
if [[ "$(uname)" == 'Linux' && "$PACKAGE_TYPE" == 'manywheel' ]]; then
308308
pushd /tmp
309-
# Per https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html gcc-11 is ABI16
310-
# Though manylinux_2.28 should have been build with gcc-14, per
311-
# https://github.com/pypa/manylinux?tab=readme-ov-file#manylinux_2_28-almalinux-8-based
312-
# On s390x gcc 14 is used because it contains fix for interaction
313-
# between precompiled headers and vectorization builtins.
314-
# This fix is not available in earlier gcc versions.
315-
# gcc-14 uses ABI19.
316-
if [[ "$(uname -m)" != "s390x" ]]; then
317-
python -c "import torch; exit(0 if torch._C._PYBIND11_BUILD_ABI == '_cxxabi1016' else 1)"
309+
# Per https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html
310+
# gcc-11 is ABI16, gcc-13 is ABI18, gcc-14 is ABI19
311+
# gcc 11 - CUDA 11.8, xpu, rocm
312+
# gcc 13 - CUDA 12.6, 12.8 and cpu
313+
# Please see issue for reference: https://github.com/pytorch/pytorch/issues/152426
314+
if [[ "$(uname -m)" == "s390x" ]]; then
315+
cxx_abi="19"
316+
elif [[ "$DESIRED_CUDA" != 'cu118' && "$DESIRED_CUDA" != 'xpu' && "$DESIRED_CUDA" != 'rocm'* ]]; then
317+
cxx_abi="18"
318+
else
319+
cxx_abi="16"
318320
fi
321+
python -c "import torch; exit(0 if torch._C._PYBIND11_BUILD_ABI == '_cxxabi10${cxx_abi}' else 1)"
319322
popd
320323
fi

0 commit comments

Comments
 (0)