依赖版本参考Installation — CuPy 13.4.1 documentation

1.  安装 cupy的依赖和cupy

1.0. 创建 cuda 基础容器

export NUM=2 && \
sudo docker run --gpus all -it \
--name cupy_LHL_${NUM} \
-v /home/jimmy/ex_cupy/tmp${NUM}:/root/tmp${NUM} \
-v /home/jimmy/.ssh:/root/.ssh \
nvidia/cuda:12.6.3-devel-ubuntu22.04

1.1. 安装 python 3.10

3.12 有一点不兼容的bug。

在第0步中创建的新容器中,运行如下脚本:

   apt update
   apt install git wget
   apt install build-essential

   apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev
   git clone https://github.com/python/cpython.git
   cd cpython/
   git checkout v3.10.12


   ./configure \
--enable-shared \
--enable-ipv6 \
--with-ensurepip=install \
--with-system-expat \
--with-system-ffi \
--with-system-libmpdec \
--enable-loadable-sqlite-extensions \
--with-dbmliborder=bdb:gdbm \
--with-computed-gotos \
--with-ensurepip=install \
--with-fpectl \
--with-address-sanitizer \
--prefix=/usr \
--enable-optimizations

   make -j
   make install
   /usr/local/bin/python3 --version
   /usr/local/bin/pip3 --version
   update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3 100
   update-alternatives --config python3 
   echo "/usr/local/lib" |  tee /etc/ld.so.conf.d/python3.conf
   ldconfig

保存为 helloPython.sh

bash ./helloPython.sh

完成安装。

1.2. 安装 cutensor


Install cutensor:

wget https://developer.download.nvidia.com/compute/cutensor/redist/libcutensor/linux-x86_64/libcutensor-linux-x86_64-2.0.0.7-archive.tar.xz

tar xf libcutensor-linux-x86_64-2.0.0.7-archive.tar.xz

cd libcutensor/

cp include/* /usr/include/
cp lib/* /usr/lib/x86_64-linux-gnu/

ldconfig

保存为 helloCutensor.sh,

bash ./helloCutensor.sh

完成安装。

注:
安装最新的 cutensor,cupy 并非必须。

wget https://developer.download.nvidia.com/compute/cutensor/2.2.0/local_installers/cutensor-local-repo-ubuntu2204-2.2.0_1.0-1_amd64.deb
dpkg -i cutensor-local-repo-ubuntu2204-2.2.0_1.0-1_amd64.deb
cp /var/cutensor-local-repo-ubuntu2204-2.2.0/cutensor-*-keyring.gpg /usr/share/keyrings/
apt-get update
apt-get -y install libcutensor2 libcutensor-dev libcutensor-doc

1.3. 安装 cusparseLt

Install cusparseLt:
当前cupy新版本,对 cusparslt的版本要求比较低,0.2版本。如果安装新版本 0.7 的话,会有不兼容的函数名。

wget https://developer.download.nvidia.com/compute/libcusparse-lt/0.2.0/local_installers/libcusparse_lt-linux-x86_64-0.2.0.1.tar.gz
tar xf libcusparse_lt-linux-x86_64-0.2.0.1.tar.gz
cd libcusparse_lt
  cp include/cusparseLt.h /usr/include/
  cp lib64/libcusparseLt* /usr/lib/x86_64-linux-gnu/
ldconfig

保存为 helloCusparseLt.sh

bash ./helloCusparseLt.sh

完成安装。

注:

如下步骤为安装最新版本的 cusparseLt,本cupy用不到

wget https://developer.download.nvidia.com/compute/cusparselt/0.7.1/local_installers/cusparselt-local-repo-ubuntu2204-0.7.1_1.0-1_amd64.deb
sudo dpkg -i cusparselt-local-repo-ubuntu2204-0.7.1_1.0-1_amd64.deb
sudo cp /var/cusparselt-local-repo-ubuntu2204-0.7.1/cusparselt-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install libcusparselt0 libcusparselt-dev

1.4. 安装 cudnn

通过登陆 nvidia 开发者网站,预先下载文件:

cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz 

   tar xf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz 
   cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive
   cd include/
   cp cudnn*.h /usr/local/cuda/include/
   cd ../lib/
   cp libcudnn* /usr/local/cuda/lib64/
   chmod a+r /usr/local/cuda/include/cudnn*.h
   ldconfig

  pip3 install numpy
  pip3 install scipy==1.14.0
  pip3 install optuna==4.0.0
  pip3 install setuptools

注:版本参考Installation — CuPy 13.4.1 documentation

与 cudnn-linux-xxxxx.tar.xz 同文件夹下创建 hellocudnn.sh,并运行:

bash ./hellocudnn.sh

完成安装cudnn8.

注:

下边的方式是安装最新版本的 cudnn,但是当前的 cupy 没有支持到 cudnn9,cudnn8正好,

wget https://developer.download.nvidia.com/compute/cudnn/9.10.2/local_installers/cudnn-local-repo-ubuntu2204-9.10.2_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.10.2_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.10.2/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

1.5. 安装 nccl

如果显卡是 A100,则用80;

如果是 rtx 2080,75; V100 为 70。

  git clone https://github.com/NVIDIA/nccl.git
  apt install build-essential devscripts debhelper fakeroot
  cd nccl/
  git checkout v2.25.1-1
  make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80"
  make pkg.debian.build
  dpkg -i build/pkg/deb/libnccl2_2.25.1-1+cuda12.6_amd64.deb 
  dpkg -i build/pkg/deb/libnccl-dev_2.25.1-1+cuda12.6_amd64.deb 

1.6 其他依赖
 

sudo python -m pip install -U setuptools pip

sudo pip install numpy==2.1.3  -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip install scipy==1.14.1  -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip install optuna==4.2.1  -i https://pypi.tuna.tsinghua.edu.cn/simple

1.7. 下载cupy 源码并安装 cupy

git clone https://github.com/cupy/cupy.git
cd cupy
git branch
git checkout v13.4.1
git branch
git submodule update --init
pip3 -v install --use-pep517 .

2.  编译 cupy的记录

pip3 -v install . 的控制台输出信息

Logo

欢迎来到由智源人工智能研究院发起的Triton中文社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐