准备工作:在代码中指定gpu来运行

如果需要用gpu运行代码,必须先在代码中指定gpu,即将相应的值存储在显存上,这是第一步
1.默认情况下,数据都是存放在内存上,如

x = nd.array([1, 2, 3])
print(x)

会输出
在这里插入图片描述
说明此时是在cpu上运行,如果为了查看某矩阵所在的设备,可以使用其context属性

print(x.context)

会输出cpu(0),表示在第0块cpu上
在这里插入图片描述
2.将值存储在GPU上
方法一:直接将变量创建在gpu(0)上

a = nd.array([1, 2, 3], ctx = mx.gpu(0)) # 放在第0块gpu上,如果括号内不填数字,也是默认0

方法二:通过copyto函数或as_in_context函数在设备之间传输数据,如将前文中内存上的x变量复制到gpu(0)上
使用copyto函数复制到显存中的变量y

y = x.copyto(mx.gpu())

使用as_in_context函数复制到显存中的变量z

z = x.as_in_context(mx.gpu())

之后的计算会在context指定的设备上进行
3.Gluon模型的GPU计算
初始化神经网络时,也需要将模型参数初始化在显存上

net = nn.Sequential()
net.add(nn.Dense(1))
net.initialize(ctx = mx.gpu(0))

第一步:cuda的安装

在这里插入图片描述首先进入NCIVA控制面板,点击左下方系统信息,再点击组件,发现在3D设置里面有CUDA11.1,但是这个CUDA貌似在Pycharm中无法同时,同时按:Win+R,输入cmd后,在命令行中输入:

nvcc --version	#用于查看cuda版本

提示:不是内部命令或外部命令,也不是可运行程序,于是推测并没有真正安装CUDA,所以下一步就是去安装CUDA
进入网站:https://developer.nvidia.com/cuda-toolkit-archive
找到对应的CUDA版本下载。我用的是mxnet,所以下载10版本即可,11版本目前没有对应的gpu版本的mxnet,这点需要注意,下载后默认安装即可。
然后再次查看CUDA 版本(方法同上),发现已经安装成功
在这里插入图片描述

第二步:mxnet的安装

备注:如果需要pip install xxx的话,不要在电脑命令行中进行(即cmd那种),直接在pycharm的terminal中输入命令操作,否则会出各种问题!!!!
注意:下面操作均在pycharm的terminal中进行!!!!
大家可能最开始时,都是在pycharm中通过:

pip install mxnet

但这是安装了cpu版本的mxnet,可以正常运行在cpu下运行代码,但是不可以在gpu下运行代码,为此我们需要安装gpu版本的mxnet。
首先,卸载cpu版本的mxnet

pip uninstall mxnet

然后安装gpu版本的mxnet,必须注意的是,这里安装的mxnet版本和我们第一步安装的CUDA版本必须兼容,否则会出问题。这里以我安装的CUDA 10.1版本为例,安装对应mxnet

pip install --pre mxnet-cu101

①代码中的101指的就是版本,如果你安装的CUDA是9.2,那么这里就是cu92
②mxnet前面必须加–pre,否则安装完成照样运行不了(原因未知)

第三步:可能的numpy问题

成功完成上述操作后,运行代码时发现提示AttributeError: module ‘numpy’ has no attribute ‘int32’’,这时我们需要先卸载原来的numpy

pip uninstall numpy

(推测)然后安装这个版本下的numpy

pip install -U numpy

至此大功告成,应该已经可以使用gpu运行代码了

附1:如何回到CPU模式

先卸载已安装的GPU模式的mxnet-cu101
(如果不影响安装cpu的mxnet的话,貌似也可以不卸载)

pip uninstall mxnet-cu101

再安装cpu版本的mxnet

pip install mxnet

在这里插入图片描述会发现连cpu版本对应的numpy也安装好了,这是就可以重新用CPU进行运行啦~

附2:如何判断自己是否在用GPU

按照上述操作使用GPU跑代码时,直观上确实发现速度比最开始的CPU快很多,但为了确定一下确实是用GPU,故运行时打开任务管理器:
在这里插入图片描述
发现GPU利用率始终是0。但是在代码运行过程中和停止运行后,用cmd命令:nvidia-smi 查看GPU情况,发现并不一样
左为停止状态下,右为运行状态下
在这里插入图片描述从左到右红框的五项指标依次表示:
①显卡温度
②性能状态,从P0到P12,P0表示最大性能,P12表示最小性能
③当前功率
④系统占用显存数量和显存总大小
⑤显存核心利用率
可以得知,确实是在用GPU运行,那么就是任务管理器出问题了

查阅了一些资料发现,解决方法有两个:
1.GPU检测的驱动出了一些问题,到网上下载个驱动修复之类的就行
2.专门下载一个GPU监测的小程序也可

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐