You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by je...@apache.org on 2022/08/24 15:37:31 UTC

[incubator-mxnet] branch v1.9.x updated: [v1.9.x] Restore Cuda 10.x CD builds (#21128)

This is an automated email from the ASF dual-hosted git repository.

jevans pushed a commit to branch v1.9.x
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git


The following commit(s) were added to refs/heads/v1.9.x by this push:
     new 878c3c9e5d [v1.9.x] Restore Cuda 10.x CD builds (#21128)
878c3c9e5d is described below

commit 878c3c9e5d172755e73ba346fffac56719ab0331
Author: Joe Evans <jo...@gmail.com>
AuthorDate: Wed Aug 24 08:37:14 2022 -0700

    [v1.9.x] Restore Cuda 10.x CD builds (#21128)
    
    * Create Dockerfile for ubuntu CD, add ccache, install cuda repos in base container instead of adding dynamically and requiring more sudo permissions.
    
    * Prevent hanging for user input on package installation.
    
    * Update build configs for cuda 10.0, 10.1 and 10.2 to work with centos7 CD.
    
    * Update links to other versions to include all supported cuda releases.
    
    * Update supported cuda version list.
    
    * Add back support for cuda 10.x, change installation design to require cuda repos to be already setup and accessible in the base containers for simplicity.
    
    * Use correct script name for installing ccache.
    
    * No need to use non-exact matches for variants.
    
    * Standardize name for ccache installation script.
    
    * Update ccache version and clean up install scripts.
    
    * Install libtool in ubuntu CD container.
    
    * Restore Cuda 10.x builds for CD.
    
    * Dynamically determine which dockerfiles are used by docker-compose (instead of having a hard-coded list) so docker cache refresh will finish successfully.
    
    * Remove debug line.
    
    * Define python executable path for tensorrt build.
    
    * Remove old hacks for changing permissions to /usr/local/bin.
    
    * Install libtool in ubuntu r container.
    
    * Update permissions to allow CI tasks to run.
    
    * Recursively set permissions on deps directory.
---
 cd/Jenkinsfile_cd_pipeline                         |  2 +-
 cd/Jenkinsfile_release_job                         |  2 +-
 cd/utils/mxnet_base_image.sh                       | 22 +++---
 ci/build.py                                        | 14 ++--
 ci/docker/Dockerfile.build.centos7_cd              | 10 ++-
 ...untu_nightly_cpu => Dockerfile.build.ubuntu_cd} | 57 +++++---------
 ci/docker/Dockerfile.build.ubuntu_cpu              |  4 +-
 ci/docker/Dockerfile.build.ubuntu_cpu_c            |  4 +-
 ci/docker/Dockerfile.build.ubuntu_cpu_lite         |  4 +-
 ci/docker/Dockerfile.build.ubuntu_cpu_python       |  4 +-
 ci/docker/Dockerfile.build.ubuntu_cpu_r            |  4 +-
 ci/docker/Dockerfile.build.ubuntu_cpu_scala        |  4 +-
 ci/docker/Dockerfile.build.ubuntu_gpu              |  4 +-
 ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt     |  4 +-
 ci/docker/Dockerfile.build.ubuntu_nightly_cpu      |  4 +-
 ci/docker/Dockerfile.build.ubuntu_nightly_gpu      |  4 +-
 ci/docker/install/centos7_adduser.sh               | 11 +--
 ci/docker/install/centos7_ccache.sh                | 17 ++--
 ci/docker/install/ubuntu_adduser.sh                | 11 +--
 ci/docker/install/ubuntu_base.sh                   |  3 +
 .../{deb_ubuntu_ccache.sh => ubuntu_ccache.sh}     | 34 ++------
 ci/docker/install/ubuntu_r.sh                      |  1 +
 ci/docker/runtime_functions.sh                     |  1 +
 config/distribution/linux_cu100.cmake              |  3 +-
 config/distribution/linux_cu101.cmake              |  5 +-
 config/distribution/linux_cu102.cmake              |  3 +-
 tools/pip/doc/CPU_ADDITIONAL.md                    |  6 ++
 tools/pip/doc/CU100_ADDITIONAL.md                  |  6 ++
 tools/pip/doc/CU101_ADDITIONAL.md                  |  6 ++
 tools/pip/doc/CU102_ADDITIONAL.md                  |  6 ++
 tools/pip/doc/CU110_ADDITIONAL.md                  |  6 ++
 tools/pip/doc/CU111_ADDITIONAL.md                  |  9 +++
 tools/pip/doc/CU112_ADDITIONAL.md                  |  5 ++
 tools/pip/doc/CU113_ADDITIONAL.md                  |  7 ++
 tools/pip/doc/CU114_ADDITIONAL.md                  |  6 ++
 tools/pip/doc/CU115_ADDITIONAL.md                  |  5 ++
 tools/pip/doc/CU116_ADDITIONAL.md                  |  4 +
 tools/pip/doc/CU117_ADDITIONAL.md                  |  3 +
 tools/setup_gpu_build_tools.sh                     | 91 ++++++++++++----------
 tools/staticbuild/README.md                        |  4 +-
 40 files changed, 222 insertions(+), 178 deletions(-)

diff --git a/cd/Jenkinsfile_cd_pipeline b/cd/Jenkinsfile_cd_pipeline
index f8b216572f..d4c7f33d3f 100644
--- a/cd/Jenkinsfile_cd_pipeline
+++ b/cd/Jenkinsfile_cd_pipeline
@@ -36,7 +36,7 @@ pipeline {
 
   parameters {
     // Release parameters
-    string(defaultValue: "cpu,native,cu110,cu111,cu112,cu113,cu114,cu115,cu116,cu117,aarch64_cpu", description: "Comma separated list of variants", name: "MXNET_VARIANTS")
+    string(defaultValue: "cpu,native,cu100,cu102,cu110,cu111,cu112,cu113,cu114,cu115,cu116,cu117,aarch64_cpu", description: "Comma separated list of variants", name: "MXNET_VARIANTS")
     booleanParam(defaultValue: false, description: 'Whether this is a release build or not', name: "RELEASE_BUILD")
   }
 
diff --git a/cd/Jenkinsfile_release_job b/cd/Jenkinsfile_release_job
index 49ff90a7c0..7073069aee 100644
--- a/cd/Jenkinsfile_release_job
+++ b/cd/Jenkinsfile_release_job
@@ -43,7 +43,7 @@ pipeline {
     // any disruption caused by different COMMIT_ID values chaning the job parameter configuration on
     // Jenkins.
     string(defaultValue: "mxnet_lib", description: "Pipeline to build", name: "RELEASE_JOB_TYPE")
-    string(defaultValue: "cpu,native,cu110,cu111,cu112,cu113,cu114,cu115,cu116,cu117,aarch64_cpu", description: "Comma separated list of variants", name: "MXNET_VARIANTS")
+    string(defaultValue: "cpu,native,cu100,cu102,cu110,cu111,cu112,cu113,cu114,cu115,cu116,cu117,aarch64_cpu", description: "Comma separated list of variants", name: "MXNET_VARIANTS")
     booleanParam(defaultValue: false, description: 'Whether this is a release build or not', name: "RELEASE_BUILD")
     string(defaultValue: "nightly_v1.x", description: "String used for naming docker images", name: "VERSION")
   }
diff --git a/cd/utils/mxnet_base_image.sh b/cd/utils/mxnet_base_image.sh
index c5be64fc6b..c19349acfa 100755
--- a/cd/utils/mxnet_base_image.sh
+++ b/cd/utils/mxnet_base_image.sh
@@ -21,37 +21,37 @@
 mxnet_variant=${1:?"Please specify the mxnet variant as the first parameter"}
 
 case ${mxnet_variant} in
-    cu100*)
+    cu100)
     echo "nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04"
     ;;
-    cu101*)
+    cu101)
     echo "nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04"
     ;;
-    cu102*)
+    cu102)
     echo "nvidia/cuda:10.2-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu110*)
+    cu110)
     echo "nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu111*)
+    cu111)
     echo "nvidia/cuda:11.1.1-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu112*)
+    cu112)
     echo "nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu113*)
+    cu113)
     echo "nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu114*)
+    cu114)
     echo "nvidia/cuda:11.4.3-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu115*)
+    cu115)
     echo "nvidia/cuda:11.5.2-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu116*)
+    cu116)
     echo "nvidia/cuda:11.6.2-cudnn8-runtime-ubuntu18.04"
     ;;
-    cu117*)
+    cu117)
     echo "nvidia/cuda:11.7.1-cudnn8-runtime-ubuntu18.04"
     ;;
     cpu)
diff --git a/ci/build.py b/ci/build.py
index c3de6c9271..2d085293b3 100755
--- a/ci/build.py
+++ b/ci/build.py
@@ -43,11 +43,8 @@ import yaml
 
 from util import *
 
-# Files for docker compose
-DOCKER_COMPOSE_FILES = set(['docker/build.centos7'])
-
 # keywords to identify arm-based dockerfiles
-AARCH_FILE_KEYWORDS = ['aarch64']
+AARCH_FILE_KEYWORDS = ['aarch64', 'armv']
 
 def get_dockerfiles_path():
     return "docker"
@@ -60,13 +57,20 @@ def get_docker_compose_platforms(path: str = get_dockerfiles_path()):
             platforms.add(platform)
     return platforms
 
+def get_docker_compose_dockerfiles(path: str = get_dockerfiles_path()):
+    dockerfiles = set()
+    with open(os.path.join(path, "docker-compose.yml"), "r") as f:
+        compose_config = yaml.load(f.read(), yaml.SafeLoader)
+        for platform in compose_config["services"]:
+            dockerfiles.add("docker/" + compose_config['services'][platform]['build']['dockerfile'])
+    return dockerfiles
 
 def get_platforms(path: str = get_dockerfiles_path(), arch=machine()) -> List[str]:
     """Get a list of platforms given our dockerfiles"""
     dockerfiles = glob.glob(os.path.join(path, "Dockerfile.*"))
     dockerfiles = set(filter(lambda x: x[-1] != '~', dockerfiles))
+    dockerfiles = dockerfiles - get_docker_compose_dockerfiles()
     files = set(map(lambda x: re.sub(r"Dockerfile.(.*)", r"\1", x), dockerfiles))
-    files = files - DOCKER_COMPOSE_FILES
     files.update(["build."+x for x in get_docker_compose_platforms()])
     arm_files = set(filter(lambda x: any(y in x for y in AARCH_FILE_KEYWORDS), files))
     if arch == 'x86_64':
diff --git a/ci/docker/Dockerfile.build.centos7_cd b/ci/docker/Dockerfile.build.centos7_cd
index 04f6d0e2da..401c86eaf5 100644
--- a/ci/docker/Dockerfile.build.centos7_cd
+++ b/ci/docker/Dockerfile.build.centos7_cd
@@ -32,11 +32,14 @@ RUN /work/centos7_scala.sh
 COPY install/centos7_cmake.sh /work/
 RUN /work/centos7_cmake.sh
 
+COPY install/centos7_ccache.sh /work/
+RUN /work/centos7_ccache.sh
+
 # Install tools for static dependency builds
 RUN yum install -y sudo patchelf nasm automake libtool file gcc-c++ gcc gcc-gfortran which
 
 # Allow jenkins user to use sudo for installing cuda libraries
-RUN echo "jenkins_slave ALL=(root) NOPASSWD: /usr/bin/yum, /usr/bin/yum-config-manager" >> /etc/sudoers.d/10_jenkins_slave
+RUN echo "jenkins_slave ALL=(root) NOPASSWD: /usr/bin/yum" >> /etc/sudoers.d/10_jenkins_slave
 
 COPY install/centos7_python.sh /work/
 RUN /work/centos7_python.sh
@@ -50,4 +53,9 @@ RUN /work/centos7_adduser.sh
 ENV PYTHONPATH=./python/
 WORKDIR /work/mxnet
 
+# setup cuda repos
+RUN yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/$(uname -m)/cuda-rhel7.repo && \
+    rpm --import http://developer.download.nvidia.com/compute/machine-learning/repos/rhel7/$(uname -m)/7fa2af80.pub && \
+    yum-config-manager --add-repo https://developer.download.nvidia.com/compute/machine-learning/repos/rhel7/$(uname -m)
+
 COPY runtime_functions.sh /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu b/ci/docker/Dockerfile.build.ubuntu_cd
similarity index 56%
copy from ci/docker/Dockerfile.build.ubuntu_nightly_cpu
copy to ci/docker/Dockerfile.build.ubuntu_cd
index 740e0143ff..a28dc0261a 100644
--- a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
+++ b/ci/docker/Dockerfile.build.ubuntu_cd
@@ -16,62 +16,47 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# Dockerfile to build and run MXNet on Ubuntu 18.04 for CPU
+# Dockerfile to build and run MXNet on CentOS 7 for CPU
 
 FROM ubuntu:18.04
 
 WORKDIR /work/deps
 
-COPY install/ubuntu_core.sh /work/
-RUN /work/ubuntu_core.sh
-
-COPY install/ubuntu_cmake.sh /work/
-RUN /work/ubuntu_cmake.sh
-
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_base.sh /work/
+RUN /work/ubuntu_base.sh
 
 COPY install/ubuntu_scala.sh /work/
-COPY install/sbt.gpg /work/
 RUN /work/ubuntu_scala.sh
 
-COPY install/ubuntu_r.sh /work/
-RUN /work/ubuntu_r.sh
+# Install cmake
+COPY install/ubuntu_cmake.sh /work/
+RUN /work/ubuntu_cmake.sh
 
-COPY install/ubuntu_perl.sh /work/
-RUN /work/ubuntu_perl.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
-COPY install/ubuntu_clang.sh /work/
-RUN /work/ubuntu_clang.sh
+# Install tools for static dependency builds
+RUN apt install -y sudo patchelf nasm automake file g++ gcc gfortran libtool
 
-COPY install/ubuntu_caffe.sh /work/
-RUN /work/ubuntu_caffe.sh
+# Allow jenkins user to use sudo for installing cuda libraries
+RUN echo "jenkins_slave ALL=(root) NOPASSWD: /usr/bin/apt" >> /etc/sudoers.d/10_jenkins_slave
 
 COPY install/ubuntu_python.sh /work/
 RUN /work/ubuntu_python.sh
 COPY install/requirements /work/
 RUN pip3 install -r /work/requirements
 
-COPY install/ubuntu_onnx.sh /work/
-RUN /work/ubuntu_onnx.sh
-
-COPY install/ubuntu_docs.sh /work/
-COPY install/requirements /work/
-RUN /work/ubuntu_docs.sh
-
-COPY install/ubuntu_nightly_tests.sh /work/
-RUN /work/ubuntu_nightly_tests.sh
-
-COPY install/ubuntu_emscripten.sh /work/
-RUN /work/ubuntu_emscripten.sh
-
 ARG USER_ID=0
-ARG GROUP_ID=0
 COPY install/ubuntu_adduser.sh /work/
 RUN /work/ubuntu_adduser.sh
 
-COPY runtime_functions.sh /work/
-
+ENV PYTHONPATH=./python/
 WORKDIR /work/mxnet
-ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
-ENV LLVM=/work/deps/emscripten-fastcomp/build/bin
+
+# setup cuda repos
+RUN curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub | apt-key add - && \
+    echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/$(uname -m) /" > /etc/apt/sources.list.d/nvidia-ml.list && \
+    wget -O /tmp/cuda.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/$(uname -m)/cuda-keyring_1.0-1_all.deb && \
+    dpkg -i /tmp/cuda.deb
+
+COPY runtime_functions.sh /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu b/ci/docker/Dockerfile.build.ubuntu_cpu
index 7c222edbb3..998a7055f4 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_c b/ci/docker/Dockerfile.build.ubuntu_cpu_c
index 42ab7c8f27..eca89b650a 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_c
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_c
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 RUN apt-get update && apt-get install -y doxygen graphviz
 
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_lite b/ci/docker/Dockerfile.build.ubuntu_cpu_lite
index 9a2080f440..415a5f572d 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_lite
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_lite
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_clang.sh /work/
 RUN /work/ubuntu_clang.sh
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_python b/ci/docker/Dockerfile.build.ubuntu_cpu_python
index e1990fd6dd..8aac883059 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_python
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_python
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_python.sh /work/
 RUN /work/ubuntu_python.sh
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_r b/ci/docker/Dockerfile.build.ubuntu_cpu_r
index e59cb0993f..9b4de99451 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_r
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_r
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_r.sh /work/
 RUN /work/ubuntu_r.sh
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu_scala b/ci/docker/Dockerfile.build.ubuntu_cpu_scala
index d3c8f42014..bb44d094d1 100644
--- a/ci/docker/Dockerfile.build.ubuntu_cpu_scala
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu_scala
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_gpu b/ci/docker/Dockerfile.build.ubuntu_gpu
index e8fd499d92..db2fff97fb 100644
--- a/ci/docker/Dockerfile.build.ubuntu_gpu
+++ b/ci/docker/Dockerfile.build.ubuntu_gpu
@@ -29,8 +29,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt b/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
index 0b7584c0db..abc45b40e2 100644
--- a/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
+++ b/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
@@ -30,8 +30,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_python.sh /work/
 RUN /work/ubuntu_python.sh
diff --git a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu b/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
index 740e0143ff..230af1f14e 100644
--- a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
+++ b/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_nightly_gpu b/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
index 4ea27b3212..75a65f448f 100644
--- a/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
+++ b/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
@@ -28,8 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/ubuntu_cmake.sh /work/
 RUN /work/ubuntu_cmake.sh
 
-COPY install/deb_ubuntu_ccache.sh /work/
-RUN /work/deb_ubuntu_ccache.sh
+COPY install/ubuntu_ccache.sh /work/
+RUN /work/ubuntu_ccache.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/install/centos7_adduser.sh b/ci/docker/install/centos7_adduser.sh
index f9d2402c95..c1743e914e 100755
--- a/ci/docker/install/centos7_adduser.sh
+++ b/ci/docker/install/centos7_adduser.sh
@@ -31,12 +31,7 @@ then
     usermod -aG wheel jenkins_slave
 
     # By default, docker creates all WORK_DIRs with root owner
-    mkdir /work/mxnet
-    mkdir /work/build
-    chown -R jenkins_slave /work/
-
-    # Later on, we have to override the links because underlying build systems ignore our compiler settings. Thus,
-    # we have to give the process the proper permission to these files. This is hacky, but unfortunately 
-    # there's no better way to do this without patching all our submodules.
-    chown -R jenkins_slave /usr/local/bin
+    mkdir -p /work/{mxnet,build,deps}
+    chown jenkins_slave /work /work/{mxnet,build}
+    chown -R jenkins_slave /work/deps
 fi
diff --git a/ci/docker/install/centos7_ccache.sh b/ci/docker/install/centos7_ccache.sh
index 4bf208d231..2c8dd5ec4e 100755
--- a/ci/docker/install/centos7_ccache.sh
+++ b/ci/docker/install/centos7_ccache.sh
@@ -21,25 +21,20 @@
 
 set -ex
 
-pushd .
+CCACHE_TAG="v3.7.12"
 
-yum -y install autoconf
-yum -y install asciidoc
+yum install -y git autoconf gcc make gperf
 
+pushd .
 mkdir -p /work/deps
 cd /work/deps
-
-git clone --recursive -b v3.4.2 https://github.com/ccache/ccache.git
-
+git clone --recursive -b $CCACHE_TAG https://github.com/ccache/ccache.git ccache
 cd ccache
-
 ./autogen.sh
-./configure
-make -j$(nproc)
+./configure --disable-man --prefix=/usr/local
+make -j $(nproc)
 make install
-
 cd /work/deps
 rm -rf /work/deps/ccache
-
 popd
 
diff --git a/ci/docker/install/ubuntu_adduser.sh b/ci/docker/install/ubuntu_adduser.sh
index a7668bac2a..4f5fea6292 100755
--- a/ci/docker/install/ubuntu_adduser.sh
+++ b/ci/docker/install/ubuntu_adduser.sh
@@ -37,12 +37,7 @@ then
     usermod -aG sudo jenkins_slave
 
     # By default, docker creates all WORK_DIRs with root owner
-    mkdir /work/mxnet
-    mkdir /work/build
-    chown -R jenkins_slave /work/
-
-    # Later on, we have to override the links because underlying build systems ignore our compiler settings. Thus,
-    # we have to give the process the proper permission to these files. This is hacky, but unfortunately 
-    # there's no better way to do this without patching all our submodules.
-    chown -R jenkins_slave /usr/local/bin
+    mkdir -p /work/{mxnet,build,deps}
+    chown jenkins_slave /work /work/{mxnet,build}
+    chown -R jenkins_slave /work/deps
 fi
diff --git a/ci/docker/install/ubuntu_base.sh b/ci/docker/install/ubuntu_base.sh
index fc81f87bc5..0a715dba48 100755
--- a/ci/docker/install/ubuntu_base.sh
+++ b/ci/docker/install/ubuntu_base.sh
@@ -21,6 +21,9 @@
 # the whole docker cache for the image
 
 set -ex
+
+export DEBIAN_FRONTEND=noninteractive
+
 apt-get update || true
 apt-get install -y \
     build-essential \
diff --git a/ci/docker/install/deb_ubuntu_ccache.sh b/ci/docker/install/ubuntu_ccache.sh
similarity index 59%
rename from ci/docker/install/deb_ubuntu_ccache.sh
rename to ci/docker/install/ubuntu_ccache.sh
index fe48aca616..9cce5f8f61 100755
--- a/ci/docker/install/deb_ubuntu_ccache.sh
+++ b/ci/docker/install/ubuntu_ccache.sh
@@ -21,39 +21,21 @@
 
 set -ex
 
-pushd .
-
-apt update || true
-apt install -y \
-    libxslt1-dev \
-    docbook-xsl \
-    xsltproc \
-    libxml2-utils
+CCACHE_TAG="v3.7.12"
 
-apt install -y --no-install-recommends \
-    autoconf \
-    asciidoc \
-    xsltproc
+apt update
+apt install -y git autoconf gcc make gperf
+pushd .
 
 mkdir -p /work/deps
 cd /work/deps
-
-git clone --recursive -b v3.4.2 https://github.com/ccache/ccache.git
-
+git clone --recursive -b $CCACHE_TAG https://github.com/ccache/ccache.git ccache
 cd ccache
-
 ./autogen.sh
-# Manually specify x86 gcc versions so that this script remains compatible with dockcross (which uses an ARM based gcc
-# by default).
-CC=/usr/bin/gcc CXX=/usr/bin/g++ ./configure
-
-# Don't build documentation #11214
-#perl -pi -e 's!\s+\Q$(installcmd) -d $(DESTDIR)$(mandir)/man1\E!!g' Makefile
-#perl -pi -e 's!\s+\Q-$(installcmd) -m 644 ccache.1 $(DESTDIR)$(mandir)/man1/\E!!g' Makefile
-make -j$(nproc)
+./configure --disable-man --prefix=/usr/local
+make -j $(nproc)
 make install
-
+cd /work/deps
 rm -rf /work/deps/ccache
-
 popd
 
diff --git a/ci/docker/install/ubuntu_r.sh b/ci/docker/install/ubuntu_r.sh
index 6d170ac26b..44f28488e2 100755
--- a/ci/docker/install/ubuntu_r.sh
+++ b/ci/docker/install/ubuntu_r.sh
@@ -35,6 +35,7 @@ add-apt-repository ppa:cran/libgit2
 
 apt-get update || true
 apt-get install -y --allow-unauthenticated \
+    libtool \
     libcairo2-dev \
     libfribidi-dev \
     libgit2-dev \
diff --git a/ci/docker/runtime_functions.sh b/ci/docker/runtime_functions.sh
index 81377c5ffe..32f614cf33 100755
--- a/ci/docker/runtime_functions.sh
+++ b/ci/docker/runtime_functions.sh
@@ -724,6 +724,7 @@ build_ubuntu_gpu_tensorrt() {
           -DUSE_MKLDNN=0                          \
           -DUSE_MKL_IF_AVAILABLE=OFF              \
           -DMXNET_CUDA_ARCH="$CI_CMAKE_CUDA_ARCH" \
+          -DPYTHON_EXECUTABLE=/usr/local/bin/python3 \
           -G Ninja                                \
           /work/mxnet
 
diff --git a/config/distribution/linux_cu100.cmake b/config/distribution/linux_cu100.cmake
index e4b0095b32..3d1451541b 100644
--- a/config/distribution/linux_cu100.cmake
+++ b/config/distribution/linux_cu100.cmake
@@ -18,7 +18,6 @@
 set(CMAKE_BUILD_TYPE "Distribution" CACHE STRING "Build type")
 set(CFLAGS "-mno-avx" CACHE STRING "CFLAGS")
 set(CXXFLAGS "-mno-avx" CACHE STRING "CXXFLAGS")
-
 set(USE_CUDA ON CACHE BOOL "Build with CUDA support")
 set(USE_CUDNN ON CACHE BOOL "Build with CUDA support")
 set(USE_NCCL ON CACHE BOOL "Build with NCCL support")
@@ -32,5 +31,5 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
 set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
 set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
 set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
-set(CUDACXX "/usr/local/cuda-10.0/bin/nvcc" CACHE STRING "Cuda compiler")
 set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0;7.5" CACHE STRING "Cuda architectures")
+set(CMAKE_CUDA_COMPILER "/usr/local/cuda-10.0/bin/nvcc" CACHE STRING "Cuda compiler")
diff --git a/config/distribution/linux_cu101.cmake b/config/distribution/linux_cu101.cmake
index c6336e2712..c1341d4ae3 100644
--- a/config/distribution/linux_cu101.cmake
+++ b/config/distribution/linux_cu101.cmake
@@ -18,9 +18,6 @@
 set(CMAKE_BUILD_TYPE "Distribution" CACHE STRING "Build type")
 set(CFLAGS "-mno-avx" CACHE STRING "CFLAGS")
 set(CXXFLAGS "-mno-avx" CACHE STRING "CXXFLAGS")
-set(CFLAGS "-mno-avx" CACHE STRING "CFLAGS")
-set(CXXFLAGS "-mno-avx" CACHE STRING "CXXFLAGS")
-
 set(USE_CUDA ON CACHE BOOL "Build with CUDA support")
 set(USE_CUDNN ON CACHE BOOL "Build with CUDA support")
 set(USE_NCCL ON CACHE BOOL "Build with NCCL support")
@@ -34,5 +31,5 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
 set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
 set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
 set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
-set(CUDACXX "/usr/local/cuda-10.1/bin/nvcc" CACHE STRING "Cuda compiler")
 set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0;7.5" CACHE STRING "Cuda architectures")
+set(CMAKE_CUDA_COMPILER "/usr/local/cuda-10.1/bin/nvcc" CACHE STRING "Cuda compiler")
diff --git a/config/distribution/linux_cu102.cmake b/config/distribution/linux_cu102.cmake
index a405a507d9..5e132762d0 100644
--- a/config/distribution/linux_cu102.cmake
+++ b/config/distribution/linux_cu102.cmake
@@ -18,7 +18,6 @@
 set(CMAKE_BUILD_TYPE "Distribution" CACHE STRING "Build type")
 set(CFLAGS "-mno-avx" CACHE STRING "CFLAGS")
 set(CXXFLAGS "-mno-avx" CACHE STRING "CXXFLAGS")
-
 set(USE_CUDA ON CACHE BOOL "Build with CUDA support")
 set(USE_CUDNN ON CACHE BOOL "Build with CUDA support")
 set(USE_NCCL ON CACHE BOOL "Build with NCCL support")
@@ -32,5 +31,5 @@ set(USE_SSE ON CACHE BOOL "Build with x86 SSE instruction support")
 set(USE_F16C OFF CACHE BOOL "Build with x86 F16C instruction support")
 set(USE_LIBJPEG_TURBO ON CACHE BOOL "Build with libjpeg-turbo")
 set(USE_DIST_KVSTORE ON CACHE BOOL "Build with DIST_KVSTORE support")
-set(CUDACXX "/usr/local/cuda-10.2/bin/nvcc" CACHE STRING "Cuda compiler")
 set(MXNET_CUDA_ARCH "3.0;5.0;6.0;7.0;7.5" CACHE STRING "Cuda architectures")
+set(CMAKE_CUDA_COMPILER "/usr/local/cuda-10.2/bin/nvcc" CACHE STRING "Cuda compiler")
diff --git a/tools/pip/doc/CPU_ADDITIONAL.md b/tools/pip/doc/CPU_ADDITIONAL.md
index 03fdc2bcf4..72fcdb8938 100644
--- a/tools/pip/doc/CPU_ADDITIONAL.md
+++ b/tools/pip/doc/CPU_ADDITIONAL.md
@@ -19,7 +19,13 @@ Prerequisites
 -------------
 This package supports Linux, Mac OSX, and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
+- [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
 - [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
 - [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
diff --git a/tools/pip/doc/CU100_ADDITIONAL.md b/tools/pip/doc/CU100_ADDITIONAL.md
index 279fe7493c..e6118c4f6a 100644
--- a/tools/pip/doc/CU100_ADDITIONAL.md
+++ b/tools/pip/doc/CU100_ADDITIONAL.md
@@ -19,7 +19,13 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
+- [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
 - [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
 - [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
diff --git a/tools/pip/doc/CU101_ADDITIONAL.md b/tools/pip/doc/CU101_ADDITIONAL.md
index f0ea20bc58..4fbabaa401 100644
--- a/tools/pip/doc/CU101_ADDITIONAL.md
+++ b/tools/pip/doc/CU101_ADDITIONAL.md
@@ -19,7 +19,13 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
+- [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
 - [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
 - [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
diff --git a/tools/pip/doc/CU102_ADDITIONAL.md b/tools/pip/doc/CU102_ADDITIONAL.md
index a00c1f3d43..2fd79fa062 100644
--- a/tools/pip/doc/CU102_ADDITIONAL.md
+++ b/tools/pip/doc/CU102_ADDITIONAL.md
@@ -19,7 +19,13 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
+- [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
 - [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
 - [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
diff --git a/tools/pip/doc/CU110_ADDITIONAL.md b/tools/pip/doc/CU110_ADDITIONAL.md
index b7752f881c..07fa2b14a8 100644
--- a/tools/pip/doc/CU110_ADDITIONAL.md
+++ b/tools/pip/doc/CU110_ADDITIONAL.md
@@ -19,7 +19,13 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
+- [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
 - [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
 - [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
diff --git a/tools/pip/doc/CU111_ADDITIONAL.md b/tools/pip/doc/CU111_ADDITIONAL.md
index 1cf9eef4cb..d8224d4368 100644
--- a/tools/pip/doc/CU111_ADDITIONAL.md
+++ b/tools/pip/doc/CU111_ADDITIONAL.md
@@ -19,7 +19,16 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
+- [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/pip/doc/CU112_ADDITIONAL.md b/tools/pip/doc/CU112_ADDITIONAL.md
index 6166ecbe4d..fb02af5af8 100644
--- a/tools/pip/doc/CU112_ADDITIONAL.md
+++ b/tools/pip/doc/CU112_ADDITIONAL.md
@@ -19,6 +19,11 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
+- [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
 - [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
diff --git a/tools/pip/doc/CU113_ADDITIONAL.md b/tools/pip/doc/CU113_ADDITIONAL.md
index 9174a03161..d1bef98197 100644
--- a/tools/pip/doc/CU113_ADDITIONAL.md
+++ b/tools/pip/doc/CU113_ADDITIONAL.md
@@ -19,9 +19,16 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
+- [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/pip/doc/CU114_ADDITIONAL.md b/tools/pip/doc/CU114_ADDITIONAL.md
index 68b72bc7f0..6aa8f3f644 100644
--- a/tools/pip/doc/CU114_ADDITIONAL.md
+++ b/tools/pip/doc/CU114_ADDITIONAL.md
@@ -19,10 +19,16 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
+- [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
 - [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/pip/doc/CU115_ADDITIONAL.md b/tools/pip/doc/CU115_ADDITIONAL.md
index 87999658bc..dfc5ce7ee0 100644
--- a/tools/pip/doc/CU115_ADDITIONAL.md
+++ b/tools/pip/doc/CU115_ADDITIONAL.md
@@ -19,11 +19,16 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
+- [mxnet-cu116](https://pypi.python.org/pypi/mxnet-cu116/) with CUDA-11.6 support.
 - [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
 - [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/pip/doc/CU116_ADDITIONAL.md b/tools/pip/doc/CU116_ADDITIONAL.md
index c97c03aa02..e4c758e85a 100644
--- a/tools/pip/doc/CU116_ADDITIONAL.md
+++ b/tools/pip/doc/CU116_ADDITIONAL.md
@@ -19,12 +19,16 @@ Prerequisites
 -------------
 This package supports Linux and Windows platforms. You may also want to check:
 
+- [mxnet-cu117](https://pypi.python.org/pypi/mxnet-cu117/) with CUDA-11.7 support.
 - [mxnet-cu115](https://pypi.python.org/pypi/mxnet-cu115/) with CUDA-11.5 support.
 - [mxnet-cu114](https://pypi.python.org/pypi/mxnet-cu114/) with CUDA-11.4 support.
 - [mxnet-cu113](https://pypi.python.org/pypi/mxnet-cu113/) with CUDA-11.3 support.
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/pip/doc/CU117_ADDITIONAL.md b/tools/pip/doc/CU117_ADDITIONAL.md
index 051b27da32..85fc3ecdc3 100644
--- a/tools/pip/doc/CU117_ADDITIONAL.md
+++ b/tools/pip/doc/CU117_ADDITIONAL.md
@@ -26,6 +26,9 @@ This package supports Linux and Windows platforms. You may also want to check:
 - [mxnet-cu112](https://pypi.python.org/pypi/mxnet-cu112/) with CUDA-11.2 support.
 - [mxnet-cu111](https://pypi.python.org/pypi/mxnet-cu111/) with CUDA-11.1 support.
 - [mxnet-cu110](https://pypi.python.org/pypi/mxnet-cu110/) with CUDA-11.0 support.
+- [mxnet-cu102](https://pypi.python.org/pypi/mxnet-cu102/) with CUDA-10.2 support.
+- [mxnet-cu101](https://pypi.python.org/pypi/mxnet-cu101/) with CUDA-10.1 support.
+- [mxnet-cu100](https://pypi.python.org/pypi/mxnet-cu100/) with CUDA-10.0 support.
 - [mxnet](https://pypi.python.org/pypi/mxnet/).
 - [mxnet-native](https://pypi.python.org/pypi/mxnet-native/) CPU variant without MKLDNN.
 
diff --git a/tools/setup_gpu_build_tools.sh b/tools/setup_gpu_build_tools.sh
index 9d717936af..da90866b3f 100755
--- a/tools/setup_gpu_build_tools.sh
+++ b/tools/setup_gpu_build_tools.sh
@@ -29,30 +29,39 @@ DEPS_PATH=$2
 source /etc/os-release
 
 >&2 echo "Setting CUDA versions for $VARIANT"
-if [[ $VARIANT == cu117* ]]; then
+if [[ $VARIANT == cu117 ]]; then
     CUDA_VERSION='11.7'
     LIBCUDNN_VERSION='8.5.0.96'
-elif [[ $VARIANT == cu116* ]]; then
+elif [[ $VARIANT == cu116 ]]; then
     CUDA_VERSION='11.6'
     LIBCUDNN_VERSION='8.4.1.50'
-elif [[ $VARIANT == cu115* ]]; then
+elif [[ $VARIANT == cu115 ]]; then
     CUDA_VERSION='11.5'
     LIBCUDNN_VERSION='8.3.3.40'
-elif [[ $VARIANT == cu114* ]]; then
+elif [[ $VARIANT == cu114 ]]; then
     CUDA_VERSION='11.4'
     LIBCUDNN_VERSION='8.2.4.15'
-elif [[ $VARIANT == cu113* ]]; then
+elif [[ $VARIANT == cu113 ]]; then
     CUDA_VERSION='11.3'
     LIBCUDNN_VERSION='8.2.1.32'
-elif [[ $VARIANT == cu112* ]]; then
+elif [[ $VARIANT == cu112 ]]; then
     CUDA_VERSION='11.2'
     LIBCUDNN_VERSION='8.1.1.33'
-elif [[ $VARIANT == cu111* ]]; then
+elif [[ $VARIANT == cu111 ]]; then
     CUDA_VERSION='11.1'
     LIBCUDNN_VERSION='8.0.5.39'
-elif [[ $VARIANT == cu110* ]]; then
+elif [[ $VARIANT == cu110 ]]; then
     CUDA_VERSION='11.0'
     LIBCUDNN_VERSION='8.0.5.39'
+elif [[ $VARIANT == cu102 ]]; then
+    CUDA_VERSION='10.2'
+    LIBCUDNN_VERSION='7.6.5.33'
+elif [[ $VARIANT == cu101 ]]; then
+    CUDA_VERSION='10.1'
+    LIBCUDNN_VERSION='7.6.5.32'
+elif [[ $VARIANT == cu100 ]]; then
+    CUDA_VERSION='10.0'
+    LIBCUDNN_VERSION='7.6.5.32'
 else
     echo "Unsupported CUDA variant '$VARIANT'"
     exit -1
@@ -62,53 +71,55 @@ CUDA_MAJOR_VERSION=$(echo $CUDA_VERSION | tr '-' '.' | cut -d. -f1,2)
 CUDA_MAJOR_DASH=$(echo $CUDA_VERSION | tr '-' '.' | cut -d. -f1,2 | tr '.' '-')
 LIBCUDNN_MAJOR=$(echo $LIBCUDNN_VERSION | cut -d. -f1)
 
-if [[ "$ID" == "centos" ]]; then
-    distro="rhel${VERSION_ID}"
-    sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distro/$(uname -m)/cuda-$distro.repo
-elif [[ "$ID" == "ubuntu" ]]; then
-    distro=$(echo ${ID}${VERSION_ID} | sed 's/\.//g')
-    wget -O /tmp/cuda.deb https://developer.download.nvidia.com/compute/cuda/repos/$distro/$(uname -m)/cuda-keyring_1.0-1_all.deb
-    sudo dpkg -i /tmp/cuda.deb
+if [[ "$ID" == "ubuntu" ]]; then
+    sudo apt update -y
 fi
 
 if [[ $ID == "centos" ]]; then
-    pkgs=(\
-        "cuda-libraries-${CUDA_MAJOR_DASH}" \
-        "cuda-libraries-devel-${CUDA_MAJOR_DASH}" \
-        "cuda-nvcc-$CUDA_MAJOR_DASH" \
-        "cuda-nvtx-$CUDA_MAJOR_DASH" \
-        "cuda-nvprof-${CUDA_MAJOR_DASH}" \
-        "libcudnn${LIBCUDNN_MAJOR}-${LIBCUDNN_VERSION}-1.cuda${CUDA_MAJOR_VERSION}" \
-        "libcudnn${LIBCUDNN_MAJOR}-devel-${LIBCUDNN_VERSION}-1.cuda${CUDA_MAJOR_VERSION}" \
-        "libnccl-devel" \
-        "libnccl2" \
-    )
+    pkgs="cuda-libraries-${CUDA_MAJOR_DASH} \
+          cuda-nvcc-$CUDA_MAJOR_DASH \
+          cuda-nvtx-$CUDA_MAJOR_DASH \
+          cuda-nvprof-${CUDA_MAJOR_DASH} \
+          libcudnn${LIBCUDNN_MAJOR}-${LIBCUDNN_VERSION}-1.cuda${CUDA_MAJOR_VERSION} \
+          libcudnn${LIBCUDNN_MAJOR}-devel-${LIBCUDNN_VERSION}-1.cuda${CUDA_MAJOR_VERSION} \
+    "
+    if [[ $CUDA_MAJOR_VERSION == 10* ]]; then
+        pkgs="$pkgs \
+              cuda-libraries-dev-${CUDA_MAJOR_DASH} \
+              libnccl-devel \
+              libnccl
+        "
+    else
+        pkgs="$pkgs \
+              cuda-libraries-devel-${CUDA_MAJOR_DASH} \
+              libnccl-devel \
+              libnccl2
+        "
+    fi
 elif [[ $ID == "ubuntu" ]]; then
-    pkgs=(\
-        "cuda-libraries-${CUDA_MAJOR_DASH}" \
-        "cuda-libraries-dev-${CUDA_MAJOR_DASH}" \
-        "cuda-nvcc-$CUDA_MAJOR_DASH" \
-        "cuda-nvtx-$CUDA_MAJOR_DASH" \
-        "cuda-nvprof-$CUDA_MAJOR_DASH" \
-        "libcudnn${LIBCUDNN_MAJOR}-${LIBCUDNN_VERSION}-1+cuda${CUDA_MAJOR_VERSION}" \
-        "libcudnn${LIBCUDNN_MAJOR}-dev-${LIBCUDNN_VERSION}-1+cuda${CUDA_MAJOR_VERSION}" \
-        "libnccl-dev" \
-        "libnccl2" \
-    )
+    pkgs="cuda-libraries-${CUDA_MAJOR_DASH} \
+          cuda-libraries-dev-${CUDA_MAJOR_DASH} \
+          cuda-nvcc-$CUDA_MAJOR_DASH \
+          cuda-nvtx-$CUDA_MAJOR_DASH \
+          cuda-nvprof-$CUDA_MAJOR_DASH \
+          libcudnn${LIBCUDNN_MAJOR}=${LIBCUDNN_VERSION}-1+cuda${CUDA_MAJOR_VERSION} \
+          libcudnn${LIBCUDNN_MAJOR}-dev=${LIBCUDNN_VERSION}-1+cuda${CUDA_MAJOR_VERSION} \
+          libnccl-dev \
+          libnccl2"
 fi
 
 if [[ ! -d /usr/local/cuda-${CUDA_MAJOR_VERSION} ]]; then
 
     if [[ "$ID" == "ubuntu" ]]; then
-        sudo apt install -y ${pkgs[*]}
+        sudo apt install -y $pkgs
     elif [[ "$ID" == "centos" ]]; then
-        sudo yum install -y ${pkgs[*]}
+        sudo yum install -y $pkgs
     fi
 
 fi
 
 # allow linking against libcuda stubs if no driver is present
 export CMAKE_PARAMETERS="-DCMAKE_EXE_LINKER_FLAGS='-L/usr/local/cuda-${CUDA_MAJOR_VERSION}/lib64/stubs' \
-	-DCMAKE_SHARED_LINKER_FLAGS='-L/usr/local/cuda-${CUDA_MAJOR_VERSION}/lib64/stubs'"
+    -DCMAKE_SHARED_LINKER_FLAGS='-L/usr/local/cuda-${CUDA_MAJOR_VERSION}/lib64/stubs'"
 
 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda-${CUDA_MAJOR_VERSION}/lib64/stubs
diff --git a/tools/staticbuild/README.md b/tools/staticbuild/README.md
index 2ca892331a..7e31d2df96 100644
--- a/tools/staticbuild/README.md
+++ b/tools/staticbuild/README.md
@@ -25,9 +25,9 @@ automatically identifing the system version, number of cores, and all
 environment variable settings. Here are examples you can run with this script:
 
 ```
-tools/staticbuild/build.sh cu112
+tools/staticbuild/build.sh cu117
 ```
-This would build the mxnet package based on CUDA 11.2. Currently, we support variants cpu, native, cu100, cu101, cu102, cu110, and cu112. All of these variants expect native have MKL-DNN backend enabled. 
+This would build the mxnet package based on CUDA 11.7. Currently, we support variants cpu, native, cu100, cu101, cu102, cu110, cu111, cu112, cu113, cu114, cu115, cu116 and cu117. All of these variants expect native have MKL-DNN backend enabled. 
 
 ```
 tools/staticbuild/build.sh cpu