Repository: cupy/cupy

Issue:
Change rapidsai CI image to stable once pylibraft support is released
Due to #6690 changing the `rapidsai/rapidsai-core-dev-nightly` image to nightly, we should pin it to a stable one once all the required features are released. 



Discussion:

Resolving patch:
diff --git a/.pfnci/generate.py b/.pfnci/generate.py
--- a/.pfnci/generate.py
+++ b/.pfnci/generate.py
@@ -213,13 +213,17 @@ def _additional_packages(self, kind: str) -> List[str]:
             cudnn = matrix.cudnn
             if nccl is not None:
                 spec = self.schema['nccl'][nccl]['spec']
+                nccl_cuda_schema = self.schema['nccl'][nccl]['cuda'][cuda]
+                alias = cuda
+                if nccl_cuda_schema is not None:
+                    alias = nccl_cuda_schema['alias']
                 major = nccl.split('.')[0]
                 if apt:
-                    packages.append(f'libnccl{major}={spec}+cuda{cuda}')
-                    packages.append(f'libnccl-dev={spec}+cuda{cuda}')
+                    packages.append(f'libnccl{major}={spec}+cuda{alias}')
+                    packages.append(f'libnccl-dev={spec}+cuda{alias}')
                 else:
-                    packages.append(f'libnccl-{spec}-*+cuda{cuda}')
-                    packages.append(f'libnccl-devel-{spec}-*+cuda{cuda}')
+                    packages.append(f'libnccl-{spec}-*+cuda{alias}')
+                    packages.append(f'libnccl-devel-{spec}-*+cuda{alias}')
             if cutensor is not None:
                 spec = self.schema['cutensor'][cutensor]['spec']
                 major = cutensor.split('.')[0]
@@ -350,7 +354,7 @@ def generate_rst(self) -> Tuple[str, List[str]]:
                 table += [
                     [
                         key_header,
-                        value if value else 'null',
+                        value if value is not None else 'null',
                         str(count) if count != 0 else '🚨',
                     ] + [
                         '✅' if mv == value else '' for mv in matrix_values
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -23,12 +23,12 @@
     'fastrlock>=0.5',
 ]
 install_requires = [
-    'numpy>=1.20,<1.27',  # see #4773
+    'numpy>=1.22,<1.27',  # see #4773
     'fastrlock>=0.5',
 ]
 extras_require = {
     'all': [
-        'scipy>=1.6,<1.13',  # see #4773
+        'scipy>=1.7,<1.13',  # see #4773
         'Cython>=0.29.22,<3',
         'optuna>=2.0',
     ],
@@ -108,7 +108,6 @@
 License :: OSI Approved :: MIT License
 Programming Language :: Python
 Programming Language :: Python :: 3
-Programming Language :: Python :: 3.8
 Programming Language :: Python :: 3.9
 Programming Language :: Python :: 3.10
 Programming Language :: Python :: 3.11
@@ -140,7 +139,7 @@
     packages=find_packages(exclude=['install', 'tests']),
     package_data=package_data,
     zip_safe=False,
-    python_requires='>=3.8',
+    python_requires='>=3.9',
     setup_requires=setup_requires,
     install_requires=install_requires,
     tests_require=tests_require,


Test patch:
diff --git a/.pfnci/linux/tests/benchmark.Dockerfile b/.pfnci/linux/tests/benchmark.Dockerfile
--- a/.pfnci/linux/tests/benchmark.Dockerfile
+++ b/.pfnci/linux/tests/benchmark.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/benchmark.head.Dockerfile b/.pfnci/linux/tests/benchmark.head.Dockerfile
--- a/.pfnci/linux/tests/benchmark.head.Dockerfile
+++ b/.pfnci/linux/tests/benchmark.head.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/cuda-example.Dockerfile b/.pfnci/linux/tests/cuda-example.Dockerfile
--- a/.pfnci/linux/tests/cuda-example.Dockerfile
+++ b/.pfnci/linux/tests/cuda-example.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.6.*+cuda11.8' 'libcudnn8-dev=8.6.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda-head.Dockerfile b/.pfnci/linux/tests/cuda-head.Dockerfile
--- a/.pfnci/linux/tests/cuda-head.Dockerfile
+++ b/.pfnci/linux/tests/cuda-head.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.6.*+cuda11.8' 'libcudnn8-dev=8.6.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/cuda-rapids.Dockerfile b/.pfnci/linux/tests/cuda-rapids.Dockerfile
--- a/.pfnci/linux/tests/cuda-rapids.Dockerfile
+++ b/.pfnci/linux/tests/cuda-rapids.Dockerfile
@@ -1,5 +1,4 @@
-# TODO(kmaehashi): Fix stable image after release (#6805)
-ARG BASE_IMAGE="rapidsai/rapidsai-core-dev-nightly:22.08-cuda11.5-devel-ubuntu20.04-py3.8"
+ARG BASE_IMAGE="rapidsai/rapidsai-core-dev:22.10-cuda11.5-devel-ubuntu20.04-py3.9"
 FROM ${BASE_IMAGE}
 
 RUN export DEBIAN_FRONTEND=noninteractive && \
diff --git a/.pfnci/linux/tests/cuda-slow.Dockerfile b/.pfnci/linux/tests/cuda-slow.Dockerfile
--- a/.pfnci/linux/tests/cuda-slow.Dockerfile
+++ b/.pfnci/linux/tests/cuda-slow.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.6.*+cuda11.8' 'libcudnn8-dev=8.6.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/cuda102.Dockerfile b/.pfnci/linux/tests/cuda102.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda102.Dockerfile
+++ /dev/null
@@ -1,36 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:10.2-devel-ubuntu18.04"
-FROM ${BASE_IMAGE}
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install software-properties-common && \
-    apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub && \
-    add-apt-repository "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/ /"
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install \
-       make build-essential libssl-dev zlib1g-dev \
-       libbz2-dev libreadline-dev libsqlite3-dev wget \
-       curl llvm libncursesw5-dev xz-utils tk-dev \
-       libxml2-dev libxmlsec1-dev libffi-dev \
-       liblzma-dev \
-\
-       && \
-    apt-get -qqy install ccache git curl && \
-    apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.8.*+cuda10.2' 'libnccl-dev=2.8.*+cuda10.2' 'libcudnn7=7.6.*+cuda10.2' 'libcudnn7-dev=7.6.*+cuda10.2'
-
-ENV PATH "/usr/lib/ccache:${PATH}"
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'cython==0.29.*'
-RUN pip uninstall -y mpi4py cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda102.multi.Dockerfile b/.pfnci/linux/tests/cuda102.multi.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda102.multi.Dockerfile
+++ /dev/null
@@ -1,36 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:10.2-devel-ubuntu18.04"
-FROM ${BASE_IMAGE}
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install software-properties-common && \
-    apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub && \
-    add-apt-repository "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/ /"
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install \
-       make build-essential libssl-dev zlib1g-dev \
-       libbz2-dev libreadline-dev libsqlite3-dev wget \
-       curl llvm libncursesw5-dev xz-utils tk-dev \
-       libxml2-dev libxmlsec1-dev libffi-dev \
-       liblzma-dev \
-       libopenmpi-dev \
-       && \
-    apt-get -qqy install ccache git curl && \
-    apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.8.*+cuda10.2' 'libnccl-dev=2.8.*+cuda10.2' 'libcudnn7=7.6.*+cuda10.2' 'libcudnn7-dev=7.6.*+cuda10.2'
-
-ENV PATH "/usr/lib/ccache:${PATH}"
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
-RUN pip uninstall -y cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda102.multi.sh b/.pfnci/linux/tests/cuda102.multi.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda102.multi.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-"$ACTIONS/build.sh"
-export OMPI_ALLOW_RUN_AS_ROOT=1
-export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
-"$ACTIONS/unittest.sh" "not slow and multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda102.sh b/.pfnci/linux/tests/cuda102.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda102.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-"$ACTIONS/build.sh"
-"$ACTIONS/unittest.sh" "not slow and not multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda110.Dockerfile b/.pfnci/linux/tests/cuda110.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda110.Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.0.3-devel-ubuntu20.04"
-FROM ${BASE_IMAGE}
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install \
-       make build-essential libssl-dev zlib1g-dev \
-       libbz2-dev libreadline-dev libsqlite3-dev wget \
-       curl llvm libncursesw5-dev xz-utils tk-dev \
-       libxml2-dev libxmlsec1-dev libffi-dev \
-       liblzma-dev \
-\
-       && \
-    apt-get -qqy install ccache git curl && \
-    apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.15.*+cuda11.0' 'libnccl-dev=2.15.*+cuda11.0' 'libcutensor1=1.4.*' 'libcutensor-dev=1.4.*' 'libcudnn8=8.2.*+cuda11.4' 'libcudnn8-dev=8.2.*+cuda11.4'
-
-ENV PATH "/usr/lib/ccache:${PATH}"
-
-COPY setup/update-alternatives-cutensor.sh /
-RUN /update-alternatives-cutensor.sh
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.9.6 && \
-    pyenv global 3.9.6 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
-RUN pip uninstall -y mpi4py cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda110.multi.Dockerfile b/.pfnci/linux/tests/cuda110.multi.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda110.multi.Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.0.3-devel-ubuntu20.04"
-FROM ${BASE_IMAGE}
-
-RUN export DEBIAN_FRONTEND=noninteractive && \
-    apt-get -qqy update && \
-    apt-get -qqy install \
-       make build-essential libssl-dev zlib1g-dev \
-       libbz2-dev libreadline-dev libsqlite3-dev wget \
-       curl llvm libncursesw5-dev xz-utils tk-dev \
-       libxml2-dev libxmlsec1-dev libffi-dev \
-       liblzma-dev \
-       libopenmpi-dev \
-       && \
-    apt-get -qqy install ccache git curl && \
-    apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.15.*+cuda11.0' 'libnccl-dev=2.15.*+cuda11.0' 'libcutensor1=1.4.*' 'libcutensor-dev=1.4.*' 'libcudnn8=8.2.*+cuda11.4' 'libcudnn8-dev=8.2.*+cuda11.4'
-
-ENV PATH "/usr/lib/ccache:${PATH}"
-
-COPY setup/update-alternatives-cutensor.sh /
-RUN /update-alternatives-cutensor.sh
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.9.6 && \
-    pyenv global 3.9.6 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.7.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
-RUN pip uninstall -y cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda110.multi.sh b/.pfnci/linux/tests/cuda110.multi.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda110.multi.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-export CUPY_ACCELERATORS="cub,cutensor"
-
-"$ACTIONS/build.sh"
-export OMPI_ALLOW_RUN_AS_ROOT=1
-export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
-"$ACTIONS/unittest.sh" "not slow and multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda110.sh b/.pfnci/linux/tests/cuda110.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda110.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-export CUPY_ACCELERATORS="cub,cutensor"
-
-"$ACTIONS/build.sh"
-"$ACTIONS/unittest.sh" "not slow and not multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda111.Dockerfile b/.pfnci/linux/tests/cuda111.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda111.Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.1.1-devel-centos7"
-FROM ${BASE_IMAGE}
-
-RUN yum -y install centos-release-scl && \
-    yum -y install devtoolset-7-gcc-c++
-ENV PATH "/opt/rh/devtoolset-7/root/usr/bin:${PATH}"
-ENV LD_LIBRARY_PATH "/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib:${LD_LIBRARY_PATH}"
-
-RUN yum -y install \
-       zlib-devel bzip2 bzip2-devel readline-devel sqlite \
-       sqlite-devel openssl-devel tk-devel libffi-devel \
-       xz-devel && \
-    yum -y install epel-release && \
-    yum -y install "@Development Tools" ccache git curl && \
-    yum -y install 'libnccl-2.8.*-*+cuda11.1' 'libnccl-devel-2.8.*-*+cuda11.1' 'libcutensor1-1.5.*' 'libcutensor-devel-1.5.*' 'libcudnn8-8.0.*-*.cuda11.1' 'libcudnn8-devel-8.0.*-*.cuda11.1'
-
-ENV PATH "/usr/lib64/ccache:${PATH}"
-
-COPY setup/update-alternatives-cutensor.sh /
-RUN /update-alternatives-cutensor.sh
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'cython==0.29.*'
-RUN pip uninstall -y scipy optuna mpi4py cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda111.multi.Dockerfile b/.pfnci/linux/tests/cuda111.multi.Dockerfile
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda111.multi.Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
-# AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.1.1-devel-centos7"
-FROM ${BASE_IMAGE}
-
-RUN yum -y install centos-release-scl && \
-    yum -y install devtoolset-7-gcc-c++
-ENV PATH "/opt/rh/devtoolset-7/root/usr/bin:${PATH}"
-ENV LD_LIBRARY_PATH "/opt/rh/devtoolset-7/root/usr/lib64:/opt/rh/devtoolset-7/root/usr/lib:${LD_LIBRARY_PATH}"
-
-RUN yum -y install \
-       zlib-devel bzip2 bzip2-devel readline-devel sqlite \
-       sqlite-devel openssl-devel tk-devel libffi-devel \
-       xz-devel && \
-    yum -y install epel-release && \
-    yum -y install "@Development Tools" ccache git curl && \
-    yum -y install 'libnccl-2.8.*-*+cuda11.1' 'libnccl-devel-2.8.*-*+cuda11.1' 'libcutensor1-1.5.*' 'libcutensor-devel-1.5.*' 'libcudnn8-8.0.*-*.cuda11.1' 'libcudnn8-devel-8.0.*-*.cuda11.1'
-
-ENV PATH "/usr/lib64/ccache:${PATH}"
-
-COPY setup/update-alternatives-cutensor.sh /
-RUN /update-alternatives-cutensor.sh
-
-RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
-ENV PYENV_ROOT "/opt/pyenv"
-ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
-    pip install -U setuptools pip wheel
-
-RUN pip install -U 'numpy==1.20.*' 'cython==0.29.*'
-RUN pip uninstall -y scipy optuna mpi4py cuda-python && \
-    pip check
diff --git a/.pfnci/linux/tests/cuda111.multi.sh b/.pfnci/linux/tests/cuda111.multi.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda111.multi.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-export CUPY_ACCELERATORS="cutensor,cub"
-
-"$ACTIONS/build.sh"
-export OMPI_ALLOW_RUN_AS_ROOT=1
-export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
-"$ACTIONS/unittest.sh" "not slow and multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda111.sh b/.pfnci/linux/tests/cuda111.sh
deleted file mode 100644
--- a/.pfnci/linux/tests/cuda111.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# AUTO GENERATED: DO NOT EDIT!
-
-set -uex
-
-ACTIONS="$(dirname $0)/actions"
-. "$ACTIONS/_environment.sh"
-
-export NVCC="ccache nvcc"
-
-export CUPY_ACCELERATORS="cutensor,cub"
-
-"$ACTIONS/build.sh"
-"$ACTIONS/unittest.sh" "not slow and not multi_gpu"
-"$ACTIONS/cleanup.sh"
diff --git a/.pfnci/linux/tests/cuda112.Dockerfile b/.pfnci/linux/tests/cuda112.Dockerfile
--- a/.pfnci/linux/tests/cuda112.Dockerfile
+++ b/.pfnci/linux/tests/cuda112.Dockerfile
@@ -13,7 +13,7 @@ RUN yum -y install \
        xz-devel && \
     yum -y install epel-release && \
     yum -y install "@Development Tools" ccache git curl && \
-    yum -y install 'libnccl-2.8.*-*+cuda11.2' 'libnccl-devel-2.8.*-*+cuda11.2' 'libcutensor1-1.4.*' 'libcutensor-devel-1.4.*' 'libcusparselt0-0.2.0.*' 'libcusparselt-devel-0.2.0.*' 'libcudnn8-8.1.*-*.cuda11.2' 'libcudnn8-devel-8.1.*-*.cuda11.2'
+    yum -y install 'libnccl-2.16.*-*+cuda11.8' 'libnccl-devel-2.16.*-*+cuda11.8' 'libcutensor1-1.6.*' 'libcutensor-devel-1.6.*' 'libcusparselt0-0.2.0.*' 'libcusparselt-devel-0.2.0.*' 'libcudnn8-8.8.*-*.cuda11.8' 'libcudnn8-devel-8.8.*-*.cuda11.8'
 
 ENV PATH "/usr/lib64/ccache:${PATH}"
 
@@ -23,10 +23,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.21.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda112.multi.Dockerfile b/.pfnci/linux/tests/cuda112.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda112.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda112.multi.Dockerfile
@@ -13,7 +13,7 @@ RUN yum -y install \
        xz-devel && \
     yum -y install epel-release && \
     yum -y install "@Development Tools" ccache git curl && \
-    yum -y install 'libnccl-2.8.*-*+cuda11.2' 'libnccl-devel-2.8.*-*+cuda11.2' 'libcutensor1-1.4.*' 'libcutensor-devel-1.4.*' 'libcusparselt0-0.2.0.*' 'libcusparselt-devel-0.2.0.*' 'libcudnn8-8.1.*-*.cuda11.2' 'libcudnn8-devel-8.1.*-*.cuda11.2'
+    yum -y install 'libnccl-2.16.*-*+cuda11.8' 'libnccl-devel-2.16.*-*+cuda11.8' 'libcutensor1-1.6.*' 'libcutensor-devel-1.6.*' 'libcusparselt0-0.2.0.*' 'libcusparselt-devel-0.2.0.*' 'libcudnn8-8.8.*-*.cuda11.8' 'libcudnn8-devel-8.8.*-*.cuda11.8'
 
 ENV PATH "/usr/lib64/ccache:${PATH}"
 
@@ -23,10 +23,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.21.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda113.Dockerfile b/.pfnci/linux/tests/cuda113.Dockerfile
--- a/.pfnci/linux/tests/cuda113.Dockerfile
+++ b/.pfnci/linux/tests/cuda113.Dockerfile
@@ -1,5 +1,5 @@
 # AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.3.1-devel-ubuntu18.04"
+ARG BASE_IMAGE="nvidia/cuda:11.3.1-devel-ubuntu20.04"
 FROM ${BASE_IMAGE}
 
 RUN export DEBIAN_FRONTEND=noninteractive && \
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.9.*+cuda11.3' 'libnccl-dev=2.9.*+cuda11.3' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcudnn8=8.2.*+cuda11.4' 'libcudnn8-dev=8.2.*+cuda11.4'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.10.0 && \
+    pyenv global 3.10.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda113.multi.Dockerfile b/.pfnci/linux/tests/cuda113.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda113.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda113.multi.Dockerfile
@@ -1,5 +1,5 @@
 # AUTO GENERATED: DO NOT EDIT!
-ARG BASE_IMAGE="nvidia/cuda:11.3.1-devel-ubuntu18.04"
+ARG BASE_IMAGE="nvidia/cuda:11.3.1-devel-ubuntu20.04"
 FROM ${BASE_IMAGE}
 
 RUN export DEBIAN_FRONTEND=noninteractive && \
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.9.*+cuda11.3' 'libnccl-dev=2.9.*+cuda11.3' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcudnn8=8.2.*+cuda11.4' 'libcudnn8-dev=8.2.*+cuda11.4'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.10.0 && \
+    pyenv global 3.10.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda114.Dockerfile b/.pfnci/linux/tests/cuda114.Dockerfile
--- a/.pfnci/linux/tests/cuda114.Dockerfile
+++ b/.pfnci/linux/tests/cuda114.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.10.*+cuda11.4' 'libnccl-dev=2.10.*+cuda11.4' 'libcutensor1=1.4.*' 'libcutensor-dev=1.4.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.3.*+cuda11.5' 'libcudnn8-dev=8.3.*+cuda11.5'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.10.0 && \
-    pyenv global 3.10.0 && \
+RUN pyenv install 3.11.0 && \
+    pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.24.*' 'scipy==1.10.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda114.multi.Dockerfile b/.pfnci/linux/tests/cuda114.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda114.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda114.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.10.*+cuda11.4' 'libnccl-dev=2.10.*+cuda11.4' 'libcutensor1=1.4.*' 'libcutensor-dev=1.4.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.3.*+cuda11.5' 'libcudnn8-dev=8.3.*+cuda11.5'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.10.0 && \
-    pyenv global 3.10.0 && \
+RUN pyenv install 3.11.0 && \
+    pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.24.*' 'scipy==1.10.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda115.Dockerfile b/.pfnci/linux/tests/cuda115.Dockerfile
--- a/.pfnci/linux/tests/cuda115.Dockerfile
+++ b/.pfnci/linux/tests/cuda115.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.11.*+cuda11.5' 'libnccl-dev=2.11.*+cuda11.5' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.4.*+cuda11.6' 'libcudnn8-dev=8.4.*+cuda11.6'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.10.0 && \
-    pyenv global 3.10.0 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.10.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda115.multi.Dockerfile b/.pfnci/linux/tests/cuda115.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda115.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda115.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.11.*+cuda11.5' 'libnccl-dev=2.11.*+cuda11.5' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.4.*+cuda11.6' 'libcudnn8-dev=8.4.*+cuda11.6'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.10.0 && \
-    pyenv global 3.10.0 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.10.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda116.Dockerfile b/.pfnci/linux/tests/cuda116.Dockerfile
--- a/.pfnci/linux/tests/cuda116.Dockerfile
+++ b/.pfnci/linux/tests/cuda116.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.12.*+cuda11.6' 'libnccl-dev=2.12.*+cuda11.6' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.5.*+cuda11.7' 'libcudnn8-dev=8.5.*+cuda11.7'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.11.0 && \
-    pyenv global 3.11.0 && \
+RUN pyenv install 3.10.0 && \
+    pyenv global 3.10.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda116.multi.Dockerfile b/.pfnci/linux/tests/cuda116.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda116.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda116.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.12.*+cuda11.6' 'libnccl-dev=2.12.*+cuda11.6' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.5.*+cuda11.7' 'libcudnn8-dev=8.5.*+cuda11.7'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.11.0 && \
-    pyenv global 3.11.0 && \
+RUN pyenv install 3.10.0 && \
+    pyenv global 3.10.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.8.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda117.Dockerfile b/.pfnci/linux/tests/cuda117.Dockerfile
--- a/.pfnci/linux/tests/cuda117.Dockerfile
+++ b/.pfnci/linux/tests/cuda117.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.13.*+cuda11.7' 'libnccl-dev=2.13.*+cuda11.7' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.7.*+cuda11.8' 'libcudnn8-dev=8.7.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -28,6 +28,6 @@ RUN pyenv install 3.11.0 && \
     pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.10.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda117.multi.Dockerfile b/.pfnci/linux/tests/cuda117.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda117.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda117.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.13.*+cuda11.7' 'libnccl-dev=2.13.*+cuda11.7' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.7.*+cuda11.8' 'libcudnn8-dev=8.7.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -28,6 +28,6 @@ RUN pyenv install 3.11.0 && \
     pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.10.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda118.Dockerfile b/.pfnci/linux/tests/cuda118.Dockerfile
--- a/.pfnci/linux/tests/cuda118.Dockerfile
+++ b/.pfnci/linux/tests/cuda118.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/cuda118.multi.Dockerfile b/.pfnci/linux/tests/cuda118.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda118.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda118.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
diff --git a/.pfnci/linux/tests/cuda11x-cuda-python.Dockerfile b/.pfnci/linux/tests/cuda11x-cuda-python.Dockerfile
--- a/.pfnci/linux/tests/cuda11x-cuda-python.Dockerfile
+++ b/.pfnci/linux/tests/cuda11x-cuda-python.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.11.*+cuda11.6' 'libnccl-dev=2.11.*+cuda11.6' 'libcutensor1=1.5.*' 'libcutensor-dev=1.5.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.5.*+cuda11.7' 'libcudnn8-dev=8.5.*+cuda11.7'
+            --allow-downgrades install 'libnccl2=2.16.*+cuda11.8' 'libnccl-dev=2.16.*+cuda11.8' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda11.8' 'libcudnn8-dev=8.8.*+cuda11.8'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -28,6 +28,6 @@ RUN pyenv install 3.10.0 && \
     pyenv global 3.10.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.21.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*' 'cuda-python==11.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*' 'cuda-python==11.*'
 RUN pip uninstall -y mpi4py && \
     pip check
diff --git a/.pfnci/linux/tests/cuda120.Dockerfile b/.pfnci/linux/tests/cuda120.Dockerfile
--- a/.pfnci/linux/tests/cuda120.Dockerfile
+++ b/.pfnci/linux/tests/cuda120.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda12.0' 'libnccl-dev=2.16.*+cuda12.0' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda12.0' 'libcudnn8-dev=8.8.*+cuda12.0'
+            --allow-downgrades install 'libnccl2=2.17.*+cuda12.0' 'libnccl-dev=2.17.*+cuda12.0' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda12.0' 'libcudnn8-dev=8.8.*+cuda12.0'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.11.0 && \
-    pyenv global 3.11.0 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.10.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda120.multi.Dockerfile b/.pfnci/linux/tests/cuda120.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda120.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda120.multi.Dockerfile
@@ -14,7 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
        && \
     apt-get -qqy install ccache git curl && \
     apt-get -qqy --allow-change-held-packages \
-            --allow-downgrades install 'libnccl2=2.16.*+cuda12.0' 'libnccl-dev=2.16.*+cuda12.0' 'libcutensor1=1.6.*' 'libcutensor-dev=1.6.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda12.0' 'libcudnn8-dev=8.8.*+cuda12.0'
+            --allow-downgrades install 'libnccl2=2.17.*+cuda12.0' 'libnccl-dev=2.17.*+cuda12.0' 'libcutensor1=1.7.*' 'libcutensor-dev=1.7.*' 'libcusparselt0=0.2.0.*' 'libcusparselt-dev=0.2.0.*' 'libcudnn8=8.8.*+cuda12.0' 'libcudnn8-dev=8.8.*+cuda12.0'
 
 ENV PATH "/usr/lib/ccache:${PATH}"
 
@@ -24,10 +24,10 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.11.0 && \
-    pyenv global 3.11.0 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.10.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda121.Dockerfile b/.pfnci/linux/tests/cuda121.Dockerfile
--- a/.pfnci/linux/tests/cuda121.Dockerfile
+++ b/.pfnci/linux/tests/cuda121.Dockerfile
@@ -28,6 +28,6 @@ RUN pyenv install 3.11.0 && \
     pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.24.*' 'scipy==1.10.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/cuda121.multi.Dockerfile b/.pfnci/linux/tests/cuda121.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda121.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda121.multi.Dockerfile
@@ -28,6 +28,6 @@ RUN pyenv install 3.11.0 && \
     pyenv global 3.11.0 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.23.*' 'scipy==1.9.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.24.*' 'scipy==1.10.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
 RUN pip uninstall -y cuda-python && \
     pip check
diff --git a/.pfnci/linux/tests/rocm-4-3.Dockerfile b/.pfnci/linux/tests/rocm-4-3.Dockerfile
--- a/.pfnci/linux/tests/rocm-4-3.Dockerfile
+++ b/.pfnci/linux/tests/rocm-4-3.Dockerfile
@@ -30,10 +30,10 @@ ENV LDFLAGS "-L${ROCM_HOME}/lib"
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.8.11 && \
-    pyenv global 3.8.11 && \
+RUN pyenv install 3.9.6 && \
+    pyenv global 3.9.6 && \
     pip install -U setuptools pip wheel
 
-RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'cython==0.29.*'
+RUN pip install -U 'numpy==1.22.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
 RUN pip uninstall -y mpi4py cuda-python && \
     pip check