Ubuntu16.04+ Anaconda虚拟环境中安装Pycuda2020&Pycuda2021.

首先说一下我的环境:Ubuntu16.04,conda4.10.1, cuda10.2, gcc:7.5.0, g++7.5.0, Python3.6.13

一、首先在Anaconda安装Python3.6.13, conda install python=3.6, 没有pip,numpy的都要安装,不然安装肯定报错
二、pip install six (不安装的话在安装成功后import pycuda.driver会报错)
三、安装gcc和g++的步骤:

1.配置下载源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
2.开始安装 gcc7:
sudo apt-get install gcc-7
sudo apt-get install g+±7
3.加入到update-alternatives版本中,这一步请根据自己的实际需求来操作 PS:最后的数字是优先级,数字越大则优先级越高 加入gcc7 :
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g+±7 20
4.检查是否成功 gcc --version g++ --version

四、查看自己应该安装哪个版本

登录网站Pycuda版本网站
在这里插入图片描述
前面pycuda-2020.1是版本号,cuda102是cuda版本为10.2,cp36表示python版本为python3.6。
于是确定我们的版本号为: pycuda-2020.1

五、安装
1.安装之前先导入cuda的路径:

export PATH=/usr/local/cuda/bin:/usr/local/cuda/bin:$PATH

如果不导入我的cuda10.2所在的路径,将会报错:可以参考另外一篇CSDN博客

gcc -pthread -B /home/zengxiaoxing/anaconda3/envs/pycuda/compiler_compat -Wl,–sysroot=/ -Wsign-compare -fwrapv -Wall -O3 -DNDEBUG -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_PYTHON_SOURCE=1 -Dboost=pycudaboost -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PACKAGE=pycuda -DPYGPU_PYCUDA=1 -DHAVE_CURAND=1 -Isrc/cpp -Ibpl-subset/bpl_subset -I/usr/include -I/home/zengxiaoxing/anaconda3/envs/pycuda/lib/python3.6/site-packages/numpy/core/include -I/home/zengxiaoxing/anaconda3/envs/pycuda/include/python3.6m -c src/cpp/cuda.cpp -o build/temp.linux-x86_64-3.6/src/cpp/cuda.o
In file included from src/cpp/cuda.cpp:4:0:
src/cpp/cuda.hpp:14:10: fatal error: cuda.h: 没有那个文件或目录
#include <cuda.h>
^~~~~~~~
compilation terminated.
error: command ‘gcc’ failed with exit status 1

2.准备就绪,就是最后的安装了

pip install pycuda=2020.1

如果报错pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
就换一个源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pycuda=2020.1
这里只是打个比方,这个源里不一定有这个版本的pycuda。

3.我擦,最后安装到整个环境里面了。

上面是Pycuda2020的安装步骤,如果只需要Pycuda2020,下面就不用看了。
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

Anaconda安装Pycuda2021. (下面只需要看加粗命令

  1. 先在上面的网页查看一下Pycuda2021的要求,目前cuda10.2满足要求,python最低要求3.7,于是我先在conda里面安装python38:
    conda install python=3.8
  2. cuda环境和上面一样
  3. 在Anaconda4.10.1环境中直接按照命令安装:conda install -c conda-forge pycuda 这条命令不行,只能显示(2021,1),import pycuda.dirver会报错。和之前一样还是使用 pip install pycuda. 安装成功,发现还是Pycuda2020,于是发现自己的pip不是最新的。于是
    ①先把pip更新到最新版本. python -m pip install --upgrade pip。 从21.0.1更新到最新的21.2.4版本。
    ②setuptools更新到57.4.0. 先卸载 pip uninstall setuptools, 再安装pip install setuptools。为什么要更新?因为不更新会报错:“Collecting setuptools Using cached setuptools-57.4.0-py3-none-any.whl (819 kB)”
  4. 直接pip install pycuda. 报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(’<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f5442a94d90>: Failed to establish a new connection: [Errno 101] 网络不可达’)’: /packages/04/80/cad93b40262f5d09f6de82adbee452fd43cdff60830b56a74c5930f7e277/wheel-0.37.0-py2.py3-none-any.whl
    WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(’<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f5442a94f40>: Failed to establish a new connection: [Errno 101] 网络不可达’)’: /packages/04/80/cad93b40262f5d09f6de82adbee452fd43cdff60830b56a74c5930f7e277/wheel-0.37.0-py2.py3-none-any.whl
    WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(’<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f5442a9b130>: Failed to establish a new connection: [Errno 101] 网络不可达’)’: /packages/04/80/cad93b40262f5d09f6de82adbee452fd43cdff60830b56a74c5930f7e277/wheel-0.37.0-py2.py3-none-any.whl
    Downloading wheel-0.37.0-py2.py3-none-any.whl (35 kB)
    这是由于源不稳定,于是用到我们上面的方法:使用清华的镜像源,
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pycuda
    发现有这条信息:“Using cached https://pypi.tuna.tsinghua.edu.cn/packages/5a/56/4682a5118a234d15aa1c8768a528aac4858c7b04d2674e18d586d3dfda04/pycuda-2021.1.tar.gz (1.7 MB)”说明有我们需要的pycuda2021。于是没问题。
    5.最后就是在python命令行中输入import pycuda; import pycuda.driver as cuda; pycuda.DIRVER
    如果不报错,说明基本上安装成功了。

最后给被Pycuda安装搞疯了的朋友们,只要满足Cuda版本对了, CUDNN和CUDA对应上了。基本能安装,因为最麻烦的就是这两个安装了。所以最好以现有cuda版本为基础,选择对应的版本。然后对python, numpy等等容易安装的调整就行了。


版权声明:本文为u010772377原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。