0. 准备
pycuda的安装环境很大程度上取决约显卡驱动本身是否能够安装成功,除了安装pycuda库本身之外,重点是需要确保如下的指令可以运行成功:
1. 安装
1.1 方法一
pip install pycuda
1.2 方法二
- 访问网址,下载
- 进入网站
- 下拉,找到适合自己Python解释器和CUDA的pycuda版本,我机器信息
- CUDA11.4
- python3.8
- 64位
- 文件信息解释
- pycuda‑2021.1+cuda114‑cp38‑cp38m‑win_amd64.whl
- pycuda‑2021.1:表示pycuda版本是2021.1
- cuda114:表示CUDA版本为11.4
- cp38‑cp38m:Python解释器3.8
- win_amd64.whl:64位
- 安装
将下载的
pycuda‑2021.1+cuda114‑cp38‑cp38m‑win_amd64.whl
文件复制到python安装路径的scripts文件夹下,我这里是D:\Python38\Scripts
,切换到该目录下执行# 安装 pip install pycuda-2021.1+cuda114-cp38-cp38-win_amd64.whl # 卸载 pip uninstall pycuda-2021.1+cuda114-cp38-cp38-win_amd64.whl
报了一个第三方库的版本错误,需要typing-extensions<3.8.0,>=3.7.0,降低版本
pip install -U typing-extensions==3.7.4
pytools版本问题,降低pytools
pip install -U pytools==2021.2.7
2. 测试
import pycuda.driver as cuda import pycuda.autoinit from pycuda.compiler import SourceModule import numpy # 创建了一个随机数组成的4*4大小的数组a a = numpy.random.randn(4, 4) # 创建的这个数组a包含的是双精度浮点数,但大多数常用的NVIDIA显卡只支持单精度浮点数,所以需要转换一下类型 a = a.astype(numpy.float32) # 已有的数据转移过去,还要设定一个目的地,所以我们要在显卡中分配一段显存 a_gpu = cuda.mem_alloc(a.nbytes) # 生成的数组a转移到GPU cuda.memcpy_htod(a_gpu, a) # 编译代码,并且加载到显卡中,把显存中的数组a_gpu作为参数传过去,同时设定块大小为4x4: mod = SourceModule(""" __global__ void doublify(float *a) { int idx = threadIdx.x + threadIdx.y*4; a[idx] *= 2; } """) # 使用pycuda.driver.Function,然后调用此引用 func = mod.get_function("doublify") # 显存中的数组a_gpu作为参数传过去,同时设定块大小为4x4 func(a_gpu, block=(4, 4, 1)) # 把经过运算处理过的数据从GPU取回,并且将它和原始数组a一同显示出来对比 a_doubled = numpy.empty_like(a) cuda.memcpy_dtoh(a_doubled, a_gpu) print(a_doubled) print(a)
启动报错numpy版本的问题
pip install -U numpy
再启动,报错
el.exe
错误,原因是没找到C++的编译器解决方法:安装C++编译器,安装Visual Studio,并设置系统变量。
2.1 下载Visual Studio 2022
📢📢📢GPU版本支持Visual Studio版本有限制,我的CUDA11.4只支持到2019
运行下载文件,这个最好留一下,后续安装其他功能可以使用。
选择C++桌面开发,安装。(想一下为了使用el.exe这个文件,我要下载整个C++开发模块😅,当然也可以只下载单个组件,但是对C++不太熟🤣)
安装好找到
cl.exe
对应目录:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64
添加系统变量
重启vscode,运行再次报错,我的GPU版本只支持2017-2019😰
卸载Visual Studio 2022😅
2.2 下载Visual Studio 2019
下载Visual Studio 2019 Community 社区版(免费版)
注意找到
cl.exe
对应目录的路径C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
环境变量设置
将2.1中配置的Visual Studio 2022的
cl.exe
的路径改为2019的cl.exe
的路径重启vscode,运行程序,成功显示数据,终于成功了🥳