From 67461e92ab9b22982117e4ac7946fa77cb45069b Mon Sep 17 00:00:00 2001 From: Janusz Lisiecki Date: Thu, 12 Mar 2026 08:14:28 +0100 Subject: [PATCH] Move to CUDA 13.3 Signed-off-by: Janusz Lisiecki --- docker/Dockerfile.cuda133.aarch64.deps | 71 ++++++++++++++++++++++++++ docker/Dockerfile.cuda133.x86_64.deps | 71 ++++++++++++++++++++++++++ docker/build.sh | 8 +-- docs/compilation.rst | 6 +-- 4 files changed, 149 insertions(+), 7 deletions(-) create mode 100644 docker/Dockerfile.cuda133.aarch64.deps create mode 100644 docker/Dockerfile.cuda133.x86_64.deps diff --git a/docker/Dockerfile.cuda133.aarch64.deps b/docker/Dockerfile.cuda133.aarch64.deps new file mode 100644 index 00000000000..343509b8cfb --- /dev/null +++ b/docker/Dockerfile.cuda133.aarch64.deps @@ -0,0 +1,71 @@ +ARG TOOLKIT_BASE_IMAGE=ubuntu:24.04 +FROM ${TOOLKIT_BASE_IMAGE} AS cuda + +ENV DEBIAN_FRONTEND=noninteractive + +# Change cuda version to pick the latest update +RUN CUDA_SUBVERSION=13.3.0-1 && \ + NVJPEG2K_VERSION=0.9.0.43-1 && \ + CUFILE_VERSION=1.18.0.66-1 && \ + CUDA_VERSION_MAJOR=13 && \ + CUDA_VERSION_MINOR=3 && \ + apt-get update && \ + apt-get install wget software-properties-common -y && \ + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/sbsa/3bf863cc.pub && \ + add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/sbsa/ /" && \ + apt-get update && \ + apt install -y \ + cuda-minimal-build-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR}=${CUDA_SUBVERSION} \ + cuda-nvdisasm-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-nvml-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-nvtx-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcurand-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcurand-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnpp-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnpp-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnvjpeg-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnvjpeg-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufft-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufft-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcusolver-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcublas-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-compat-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufile-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR}=${CUFILE_VERSION} && \ + apt-get install libnvjpeg2k0-dev-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} \ + libnvjpeg2k0-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} \ + libnvjpeg2k0-static-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} -y && \ + cp /usr/include/libnvjpeg2k/${CUDA_VERSION_MAJOR}/* /usr/local/cuda/include/ && \ + cp /usr/lib/sbsa-linux-gnu/libnvjpeg2k/${CUDA_VERSION_MAJOR}/* /usr/local/cuda/lib64/ && \ + mkdir /tmp/nvcomp && cd /tmp/nvcomp && \ + wget https://developer.download.nvidia.com/compute/nvcomp/redist/nvcomp/linux-sbsa/nvcomp-linux-sbsa-5.2.0.10_cuda13-archive.tar.xz && \ + tar -xf * && \ + cp -r nvcomp-linux-sbsa-5.2.0.10_cuda13-archive/include/* /usr/local/cuda/include/ && \ + cp -r nvcomp-linux-sbsa-5.2.0.10_cuda13-archive/lib/* /usr/local/cuda/lib64/ && \ + cd / && rm -rf /tmp/nvcomp && \ + mv /usr/local/cuda/bin/fatbinary /usr/local/cuda/bin/fatbinary_org && \ + # fatbinary removed one of the options while clang still uses it + # this creates a wrapper for a fatbinary which translates this argument when used + echo "#!/bin/bash\\n\ +real_fatbinary=\$(which fatbinary_org || which fatbinary)\\n\ +# If we can't find the real fatbinary, exit with error\\n\ +if [ -z \"\$real_fatbinary\" ]; then\\n\ + echo \"Error: Could not find real fatbinary executable\" >&2\\n\ + exit 1\\n\ +fi\\n\ +args=()\\n\ +while [ \$# -gt 0 ]; do\\n\ + case \"\$1\" in\\n\ + --image=*)\\n\ + specs=\$1\\n\ + new_spec=\$(echo \"\$specs\" | sed 's/image=/image3=/g' | sed 's/profile=sm_/kind=elf,sm=/g')\\n\ + args+=(\"\${new_spec[@]}\")\\n\ + ;;\\n\ + *)\\n\ + args+=(\"\$1\")\\n\ + ;;\\n\ + esac\\n\ + shift\\n\ +done\\n\ +exec \"\$real_fatbinary\" \"\${args[@]}\"" > /usr/local/cuda/bin/fatbinary && \ + chmod a+x /usr/local/cuda/bin/fatbinary && \ + rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.cuda133.x86_64.deps b/docker/Dockerfile.cuda133.x86_64.deps new file mode 100644 index 00000000000..c4f7f23beed --- /dev/null +++ b/docker/Dockerfile.cuda133.x86_64.deps @@ -0,0 +1,71 @@ +ARG TOOLKIT_BASE_IMAGE=ubuntu:24.04 +FROM ${TOOLKIT_BASE_IMAGE} AS cuda + +ENV DEBIAN_FRONTEND=noninteractive + +# Change cuda version to pick the latest update +RUN CUDA_SUBVERSION=13.3.0-1 && \ + NVJPEG2K_VERSION=0.9.0.43-1 && \ + CUFILE_VERSION=1.18.0.66-1 && \ + CUDA_VERSION_MAJOR=13 && \ + CUDA_VERSION_MINOR=3 && \ + apt-get update && \ + apt-get install wget software-properties-common -y && \ + apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub && \ + add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" && \ + apt-get update && \ + apt install -y \ + cuda-minimal-build-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR}=${CUDA_SUBVERSION} \ + cuda-nvdisasm-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-nvml-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-nvtx-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcurand-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcurand-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnpp-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnpp-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnvjpeg-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libnvjpeg-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufft-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufft-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcusolver-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcublas-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + cuda-compat-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR} \ + libcufile-dev-${CUDA_VERSION_MAJOR}-${CUDA_VERSION_MINOR}=${CUFILE_VERSION} && \ + apt-get install libnvjpeg2k0-dev-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} \ + libnvjpeg2k0-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} \ + libnvjpeg2k0-static-cuda-${CUDA_VERSION_MAJOR}=${NVJPEG2K_VERSION} -y && \ + cp /usr/include/libnvjpeg2k/${CUDA_VERSION_MAJOR}/* /usr/local/cuda/include/ && \ + cp /usr/lib/x86_64-linux-gnu/libnvjpeg2k/${CUDA_VERSION_MAJOR}/* /usr/local/cuda/lib64/ && \ + mkdir /tmp/nvcomp && cd /tmp/nvcomp && \ + wget https://developer.download.nvidia.com/compute/nvcomp/redist/nvcomp/linux-x86_64/nvcomp-linux-x86_64-5.2.0.10_cuda13-archive.tar.xz && \ + tar -xf * && \ + cp -r nvcomp-linux-x86_64-5.2.0.10_cuda13-archive/include/* /usr/local/cuda/include/ && \ + cp -r nvcomp-linux-x86_64-5.2.0.10_cuda13-archive/lib/* /usr/local/cuda/lib64/ && \ + cd / && rm -rf /tmp/nvcomp && \ + mv /usr/local/cuda/bin/fatbinary /usr/local/cuda/bin/fatbinary_org && \ + # fatbinary removed one of the options while clang still uses it + # this creates a wrapper for a fatbinary which translates this argument when used + echo "#!/bin/bash \\n\ +real_fatbinary=\$(which fatbinary_org || which fatbinary) \\n\ +# If we can't find the real fatbinary, exit with error \\n\ +if [ -z \"\$real_fatbinary\" ]; then \\n\ + echo \"Error: Could not find real fatbinary executable\" >&2 \\n\ + exit 1 \\n\ +fi \\n\ +args=() \\n\ +while [ \$# -gt 0 ]; do \\n\ + case \"\$1\" in \\n\ + --image=*) \\n\ + specs=\$1 \\n\ + new_spec=\$(echo \"\$specs\" | sed 's/image=/image3=/g' | sed 's/profile=sm_/kind=elf,sm=/g') \\n\ + args+=(\"\${new_spec[@]}\") \\n\ + ;; \\n\ + *) \\n\ + args+=(\"\$1\") \\n\ + ;; \\n\ + esac \\n\ + shift \\n\ +done \\n\ +exec \"\$real_fatbinary\" \"\${args[@]}\"" > /usr/local/cuda/bin/fatbinary && \ + chmod a+x /usr/local/cuda/bin/fatbinary && \ + rm -rf /var/lib/apt/lists/* diff --git a/docker/build.sh b/docker/build.sh index 5e42d8693f7..d1d3930ed48 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -5,7 +5,7 @@ a build environment To change build configuration please export appropriate env variables (for exact meaning please check the README): PYVER=[default 3.10, required only by Run image] -CUDA_VERSION=[default 13.0, accepts also 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13.0, 13.1 and 13.2] +CUDA_VERSION=[default 13.0, accepts also 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9, 13.0, 13.1, 13.2 and 13.3] NVIDIA_BUILD_ID=[default 12345] CREATE_WHL=[default YES] CREATE_RUNNER=[default NO] @@ -40,16 +40,16 @@ shift $((OPTIND - 1)) export ARCH=${ARCH:-x86_64} export PYVER=${PYVER:-3.10} export PYV=${PYVER/./} -export CUDA_VERSION=${CUDA_VERSION:-13.2} +export CUDA_VERSION=${CUDA_VERSION:-13.3} export CUDA_VER=${CUDA_VERSION//./} if [ "${CUDA_VERSION%%\.*}" ] then if [ $CUDA_VER != "120" ] && [ $CUDA_VER != "121" ] && [ $CUDA_VER != "122" ] && [ $CUDA_VER != "123" ] && [ $CUDA_VER != "124" ] && \ [ $CUDA_VER != "125" ] && [ $CUDA_VER != "126" ] && [ $CUDA_VER != "128" ] && [ $CUDA_VER != "129" ] && [ $CUDA_VER != "130" ] && \ - [ $CUDA_VER != "131" ] && [ $CUDA_VER != "132" ] + [ $CUDA_VER != "131" ] && [ $CUDA_VER != "132" ] && [ $CUDA_VER != "133" ] then - echo "Wrong CUDA_VERSION=$CUDA_VERSION provided. Only 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.8, 12.9, 13.0, 13.1 and 13.2 are supported" + echo "Wrong CUDA_VERSION=$CUDA_VERSION provided. Only 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.8, 12.9, 13.0, 13.1, 13.2 and 13.3 are supported" exit 1 fi else diff --git a/docs/compilation.rst b/docs/compilation.rst index 46c248aa310..e648c863416 100644 --- a/docs/compilation.rst +++ b/docs/compilation.rst @@ -37,10 +37,10 @@ Building Python Wheel Change directory (``cd``) into ``docker`` directory and run ``./build.sh``. If needed, set the following environment variables: -* | CUDA_VERSION - CUDA toolkit version (12.9 and 13.2 are officially supported, - 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.8, 13.0 and 13.1 are deprecated +* | CUDA_VERSION - CUDA toolkit version (12.9 and 13.3 are officially supported, + 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.8, 13.0, 13.1 and 13.2 are deprecated and may not work). - | The default is ``13.2``. Thanks to CUDA extended compatibility mode, CUDA 12.x wheels are named as + | The default is ``13.3``. Thanks to CUDA extended compatibility mode, CUDA 12.x wheels are named as CUDA 12.0 because it can work with the CUDA 12.0 R525.x driver family. Same applies to CUDA 13.x. Please update to the latest recommended driver version in that family. | If the value of the CUDA_VERSION is prefixed with `.` then any value ``.XX.Y`` can be passed,