如何使用自己电脑上自带的GPU来运行pycharm中的程序

  • 准备工作:在代码中指定gpu来运行
  • 第一步:cuda的安装
  • 第二步:mxnet的安装
  • 第三步:可能的numpy问题
  • 附1:如何回到CPU模式
  • 附2:如何判断自己是否在用GPU
  • 准备工作:在代码中指定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监测的小程序也可

    来源:新客草草

    物联沃分享整理
    物联沃-IOTWORD物联网 » gpu运行pycharm

    发表评论