MXNet gpu 版本快速安装(mxnet-cu101)

MXNet gpu 版本快速安装(mxnet-cu101)最近有项目要用mxnet,要从头开始配置mxnet,记录一下全过程,先说下在Windows10下的安装GPU版本的问题。查看cuda版本首先要查看一下自己安装的cuda版本,一般情况下可以使用nvcc–version或nvidia-smi-q指令,比如我的是10.1版,C:\Users\SpaceVision>nvcc–versionnvcc:NVIDIA(R)CudacompilerdriverCopyright(c)2005-2019NVIDIAC

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

最近有项目要用mxnet,要从头开始配置mxnet,记录一下全过程,先说下在Windows 10下的安装GPU版本的问题。

查看cuda版本

首先要查看一下自己安装 的cuda版本,一般情况下可以使用nvcc –version或nvidia-smi -q指令,比如我的是10.1版,

C:\Users\SpaceVision>nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:12:52_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.1, V10.1.243
​
​
C:\Users\SpaceVision>nvidia-smi -q
# nvidia-smi -q
==============NVSMI LOG==============
Timestamp                           : Sun Jun 14 21:19:39 2020
Driver Version                      : 432.00
CUDA Version                        : 10.1
........

Jetbrains全家桶1年46,售后保障稳定

总体安装步骤

简要介绍一下总体的实际安装步骤。注意这里VS不是必须的,但通常我电脑里都是装好了的。

1、安装Microsoft Visual Studio

https://visualstudio.microsoft.com/downloads/下载并安装最新的Community版

2、安装Nvida cuda-toolkit

https://developer.nvidia.com/cuda-downloads下载并安装最新版的CURD,我安装的是10.1版

3、安装cuDNN

https://developer.nvidia.com/cudnn下载cuDNN。注意这要注册登录才能下载,比较麻烦,但只有耐心一步一步去注册和登录了。

下载后,将其解压,将其中的三个文件夹复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\下面对应的地方(同样能看到bin、include、lib目录的地方)。cuDNN安装教程上第3条说的分别复制,其实可以一起复制即可。

增加环境变量,在命令行下执行control sysdm.cpl进入系统属性,高级,环境变量,新建,变量名输入“CUDA_PATH”,变量值输入“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1”(实际的安装路径)。

4、安装Mxnet GPU

一般情况下,我使用的都是anaconda,这时创建一个环境,比如名称为mxnet36,然后用命令 conda activate mxnet36 切换到该环境中再安装mxnet-cu101。其命令为, pip install mxnet-cu101

5、测试

在python中import mxnet,如果没有出错,即大功告成。当然还可以进一步在gpu上创建nd数组,打印确认是否是在GPU上创建的。

注意上面的CUDA、cuDNN、Mxnet gpu都安装的是101版,我没有测试过不同版本号是否兼容。教程上要求VS的版本是2015或2017,我实际安装的是2019,没有问题。

 

安装Mxnet GPU

我最初使用conda install mxnet-gpu,发现安装的是cudatoolkit9.0,然后到 https://anaconda.org/anaconda/mxnet-gpu/files 看了一下,发现mxnet-gpu并没有太多的版本可以选择。当然, 如果这个版本和你的驱动版本正好相符,倒能省不少事,cudnn什么的都会配套给你装好。

因为版本我的驱动器的不相符,最后只能放弃。回过头来再用下面的指令安装, pip install mxnet-cu101

安装cudatoolkit+cudnn

吸取刚才的教训,这次直接指定版本号,

conda install -c anaconda cudatoolkit=10.1

当然,后续还要安装 cudnn(参考:https://anaconda.org/anaconda/cudnn),这次可以不用指定版本号,

conda install -c anaconda cudnn

然后提示中可以看到相兼容的版本信息,

The following packages will be downloaded:
    package                    |            build
    ---------------------------|-----------------
    cudnn-7.6.5                |       cuda10.1_0       250.4 MB  anaconda
    ------------------------------------------------------------
                                           Total:       250.4 MB
The following NEW packages will be INSTALLED:
  cudnn              anaconda/win-64::cudnn-7.6.5-cuda10.1_0

补充一点在Ubuntu碰到的情况,在已经安装cudatoolkit10.1的情况下,conda install -c anaconda cudnn居然会把10.1版本卸载掉,然后硬生生装上cudatoolkit10.2和cudnn7.6.5,这种情况在windows下没有碰到过,解决办法是一次性强行指定安装,如下,

conda install -c anaconda  cudatoolkit=10.1  cudnn

 

后续问题

也不知道是为什么,虽然 我仔细检查了一下,各个配置都正常,但使用时还是报错,

(mxgpu36) C:\Users\space>python
Python 3.6.10 |Anaconda, Inc.| (default, May  7 2020, 19:46:08) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mxnet as mx
>>> mx.gpu
<function gpu at 0x0000014FFFF22840>
>>> import mxnet.ndarray as nd
>>> a = nd.ones(shape=(2,3),dtype='int32',ctx=mx.gpu(0))
[16:43:31] c:\jenkins\workspace\mxnet-tag\mxnet\src\imperative\./imperative_utils.h:91: GPU support is disabled. Compile MXNet with USE_CUDA=1 to enable GPU support.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\space\AppData\Roaming\Python\Python36\site-packages\mxnet\ndarray\ndarray.py", line 2437, in ones
    return _internal._ones(shape=shape, ctx=ctx, dtype=dtype, **kwargs)
  File "<string>", line 34, in _ones
  File "C:\Users\space\AppData\Roaming\Python\Python36\site-packages\mxnet\_ctypes\ndarray.py", line 92, in _imperative_invoke
    ctypes.byref(out_stypes)))
  File "C:\Users\space\AppData\Roaming\Python\Python36\site-packages\mxnet\base.py", line 253, in check_call
    raise MXNetError(py_str(_LIB.MXGetLastError()))
mxnet.base.MXNetError: [16:43:31] C:\Jenkins\workspace\mxnet-tag\mxnet\src\imperative\imperative.cc:81: Operator _ones is not implemented for GPU.
​

这个是比较经典的,找不到mxnet-gpu版本,而只找到了mxnet cpu版本的报错。我估计是anaconda在环境设置上有什么问题,把另一个环境中的mxnet cpu版本引用到这个mxgpu36新环境中来了,或者有什么东西安装时没清理干净。

于是我卸载了mxnet,

(mxgpu36) C:\Users\SpaceVision>pip uninstall mxnet
Found existing installation: mxnet 1.5.0
Uninstalling mxnet-1.5.0:
  Would remove:
    c:\users\space\appdata\roaming\python\python36\site-packages\dmlc_tracker\*
    c:\users\space\appdata\roaming\python\python36\site-packages\mxnet-1.5.0.dist-info\*
    c:\users\space\appdata\roaming\python\python36\site-packages\mxnet\*
Proceed (y/n)? y
  Successfully uninstalled mxnet-1.5.0

然后再安装mxnet-cu101,如下,

(mxgpu36) C:\Users\SpaceVision>pip install mxnet-cu101
Requirement already satisfied: mxnet-cu101 in d:\anaconda3\envs\mxgpu36\lib\site-packages (1.5.0)
Requirement already satisfied: requests<2.19.0,>=2.18.4 in c:\users\space\appdata\roaming\python\python36\site-packages (from mxnet-cu101) (2.18.4)
Requirement already satisfied: graphviz<0.9.0,>=0.8.1 in c:\users\space\appdata\roaming\python\python36\site-packages (from mxnet-cu101) (0.8.4)
Requirement already satisfied: numpy<1.17.0,>=1.8.2 in d:\anaconda3\envs\mxgpu36\lib\site-packages (from mxnet-cu101) (1.16.6)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in c:\users\space\appdata\roaming\python\python36\site-packages (from requests<2.19.0,>=2.18.4->mxnet-cu101) (1.22)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\space\appdata\roaming\python\python36\site-packages (from requests<2.19.0,>=2.18.4->mxnet-cu101) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\space\appdata\roaming\python\python36\site-packages (from requests<2.19.0,>=2.18.4->mxnet-cu101) (2020.4.5.2)
Requirement already satisfied: idna<2.7,>=2.5 in c:\users\space\appdata\roaming\python\python36\site-packages (from requests<2.19.0,>=2.18.4->mxnet-cu101) (2.6)
​

测试

最后再测试一下,

(mxgpu36) C:\Users\SpaceVision>python
Python 3.6.10 |Anaconda, Inc.| (default, May  7 2020, 19:46:08) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mxnet as mx
>>> import mxnet.ndarray as nd
>>> a = nd.ones(shape=(2,3),dtype='int32',ctx=mx.gpu(0))
>>> print(a.shape, a.dtype, a.size, a.context)
(2, 3) <class 'numpy.int32'> 6 gpu(0)
>>>

OK,大功告成。

 

附:Anaconda弄错环境的原因分析

这个分析起来比较麻烦,目前没有头绪,anaconda用久了,怪异的现象还真不少。我另外开了一贴,在这里
https://blog.csdn.net/tanmx219/article/details/106794021
供参考。

附:使用时碰到的numpy的版本问题

尽管我已经装了正确的版本,但使用时还是经常碰到,
mxnet 1.5.0 has requirement numpy<1.17.0,>=1.8.2, but you’ll have numpy 1.18.5 which is incompatible.

我按照
pip install -U numpy==1.16.6

一般当时能解决问题,重启之后又会再次报错,目前这个错误有点不可思议了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/213408.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm激活码(破解版激活)

    pycharm激活码(破解版激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Redis很牛逼很秀!轻松实现实时订阅推送

    Redis很牛逼很秀!轻松实现实时订阅推送

  • pycharm怎样添加解释器_pycharm2017解释器

    pycharm怎样添加解释器_pycharm2017解释器如何配置pycharm里面的python解释器?

  • 字与字节的关系_一个比特等于多少字节

    字与字节的关系_一个比特等于多少字节之前一直认为1个字等于2个字节,刚在书中发现有个说法说,4个字节作为一个字,与之前记忆的1个字等于2个字节相违背,这才“较真”好好查了下相关的概念。基本概念字:计算机进行数据处理时,一次存取、加工和

  • solid原则应用实例_设计模式solid原则

    solid原则应用实例_设计模式solid原则在面向对象编程中,SOLID是5个重要的设计原则的缩写。首先是由著名的软件大师RobertC.Martin(Bob大叔)在DesignPrinciplesandDesignPatterns中提出,后来MichaelFeathers用SOLID来概括这五大原则。SOLID原则使得软件设计更加容易理解、灵活和可维护。作为一名软件工程师,这5个原则我们必须知道。本文,我将涵盖这些原则,并举例说明怎样是违背了原则,以及如何进行纠正来符合SOLID原则。S—Singlerespons

    2022年10月27日
  • 提升进程权限-OpenProcessToken等函数的用法[通俗易懂]

    提升进程权限-OpenProcessToken等函数的用法[通俗易懂]提升进程权限文章一:在枚举/结束系统进程或操作系统服务时,会出现自己权限不足而失败的情况,这时就需要提升自己进程到系统权限,其实提升权限的代码很简单的,看到过的最经典的应该是《WINDOWS核心编程》第四章中操作进程给出的那个函数了,如果我们真的不了解它的操作也不要紧,因为只要在你需要的地方调用下面这个函数就是了,以下是它的代码:BOOLEnablePriv(){HAND

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号