写在前面的话,小半周时间都为了搞这个,真的头疼,没有问题的人可以执行得非常顺利,一旦有问题,就怎么执行都不对,希望大家不要灰心,坚持到底!(另,我的ubuntu所有环境安装详细记录:https://blog.csdn.net/m0_37738114/article/details/119322839

由于显卡的硬性要求,我要安装mxnet-cu111,但目前官网并没有发布,只能自己编译。

环境:ubuntu20.04+cuda11.1+显卡是RTX3060

试错一:官网参考:https://mxnet.apache.org/get_started/build_from_source#obtaining-the-source-code

不过官网许多地方写得并不详细,对于小白的我来说,不敢乱改

试错二:参考博客:https://www.cnblogs.com/silence-cho/p/14524181.html

因为该博客写得非常具体,且显卡配置和ubuntu版本与我的环境都非常相似,所以我一开始无条件按照该篇博客的步骤一步一步来的,结果一直有错误,我就不断的重新来过,结果搞了有三天都没成功,哭死(这里并不是说该博客一定错误,可能就是不适合我的环境

报错就是,比如最后执行make命令的时候,先是显示进度,从0%-100%要非常久,然后就不停地显示类似于报错的信息,总是重复的,而且不ctrl+c,就不会停止,显然能看出来是不可能成功的。最后可以在mxnet文件夹查找 libmxnet.so 看看,如果没有生成该文件那就是没有编译成功。

查找命令:

find ./ -name libmxnet.so

成功:参考博客:https://blog.csdn.net/eidolon_foot/article/details/111533670

绝望了一天半之后,真的就是突然发现,原来还有其他的尝试方法,而且不需要改那么多的配置,命令十分简单,于是我就试试了。当然其间也遇到了许许多多的难题,我又花了大半天时间,结果弄出来的是一个cpu版本的mxnet,不过也算是一种进步吧!

之后的一天,我又尝试编译gpu版本的mxnet,最后的最后,发现原因竟然是因为驱动有问题,我之前明明安装好了驱动呀,为什么几天没检查居然发现驱动出问题了???以下是我的解决方法:https://blog.csdn.net/m0_37738114/article/details/119485335

真的是,解决了这个问题之后,发现编译gpu版本的mxnet真的可以如此简单!!!

吓得我现在每隔一段时间就运行一下  nvidia-smi  检查下驱动

一切就像https://blog.csdn.net/eidolon_foot/article/details/111533670 博客中介绍的那样简单,我这里写下一些详细的步骤,以解决没有那么顺利的同学的后顾之忧。

1、安装依赖

sudo apt-get update
sudo apt-get install -y build-essential git ninja-build ccache libopenblas-dev libopencv-dev cmake
sudo apt install gfortran

2、任选一个目录,将 mxnet 源码及其依赖包下载到当前目录,命令如下:

(1)无vpn的情况,则采用镜像网址下载:

git clone --recursive https://github.com.cnpmjs.org/apache/incubator-mxnet mxnet

(2) 有vpn的情况,则直接下载:

git clone --recursive https://github.com/apache/incubator-mxnet mxnet

3、git下载依赖包中途出错的问题:如果上述命令执行到最后因为个别依赖包下载不下来导致命令错误退出。

解决办法:

到 .gitmodules 文件中,将相应网址改为镜像网址。执行以下命令可实现一步更改,把文件中所有匹配到的 github.com字符串 改为 github.com.cnpmjs.org 字符串:

sed -i "s/github.com/github.com.cnpmjs.org/g" `grep github.com -rl .gitmodules`

然后再执行:第一行是更新配置,第二行是继续执行下载任务

git submodule sync
git submodule update --init --recursive

这边依赖包一定一定要下载好,否则之后编译肯定会出错的!

如果编译过程中还是报依赖包的相关错误,就反复执行以下命令,直到没有任何打印信息为止

git submodule update --init --recursive

tips:如果依赖包下载还是有问题,就找到对应包下面的.gitmodules文件,如法炮制,将里面的github.com字符串 改为 github.com.cnpmjs.org 字符串,然后运行git submodule sync

然后回到mxnet目录,重新执行git submodule update --init --recursive,直到不再有打印信息,说明所有依赖包都下载成功了

4、博客https://www.cnblogs.com/silence-cho/p/14524181.html  里面提到的要切换分支,经过我的验证,切不切换都无所谓,切换还增加复杂度,建议就不要麻烦了如果你需要切换分支,那么就可以参考这里:

如果你已经创建过该仓库了,则只需执行:(没有会报错,执行后面的命令即可)

cd mxnet
git checkout v1.8.x

不过通常是没有,则需要执行以下命令创建本地仓库

cd mxnet
git branch -a                  先查看当前远端分支情况
git checkout remotes/origin/v1.8.x   选择远端v1.8.x分支(origin为远程仓库别名)
git branch v1.8.x                创建本地v1.8.x分支
git checkout v1.8.x              选择本地新创建的分支就可以了

有时拉分支会报错,那是因为你改动了里面的文件,我通常的做法是把 .gitmodules 文件还原回去,当然你也可以根据提示中的来操作,比如提交更改,或者全部刷新。

这个命令是用来恢复仓库的:

git checkout -- *

5、make编译

我听说以前的版本是执行 cp make/config.mk ./ 也就是把make目录下的 config.mk 复制到 mxnet目录下作为配置文件。不过现在的版本是将config目录下的文件复制过来

config目录下有 linux_gpu.cmake、linux.cmake 及其他文件,有的人是用的 linux.cmake 配置文件,我这边采用 linux_gpu.cmake,因为我要编译的是gpu版本的mxnet。

cp config/linux_gpu.cmake config.cmake

我也不知道如果cmake失败,是不是一定要删除build文件夹重新来过,总之防患于未然。以下命令请一步一步执行,避免出错:

rm -rf build   # 如果有build文件夹,可以删除
mkdir build
cd build
cmake ..
cmake --build .

我还改了一个地方,不知道是否有影响:

把复制过来的 config.cmake 文件中的 CMAKE_CUDA_COMPILER 所在行改为如下,cuda路径是我个人的cuda 安装路径。

set(CMAKE_CUDA_COMPILER "/usr/local/cuda-11.1/bin/nvcc" CACHE BOOL "Cuda compiler (nvcc)")

6、最后终于成功执行了,编译过程还是有很多类似于报错的信息,但是成功执行到100%并退出了,检查了下, 我要生成的文件在 build/libmxnet.so。

7、编译完成!先给我的python3安装上mxnet

cd python
python setup.py install

执行:

import mxnet as mx
a=mx.nd.ones((2,3),mx.gpu(0))
print((a*2)

有一个奇怪的打印信息,貌似不是问题:/home/sophia/mxnet/src/storage/storage.cc:199: Using Pooled (Naive) StorageManager for GPU

不过最后是执行成功的,那应该是没问题了吧

mxnet编译(ubuntu20.04+cuda11)(血泪篇)相关推荐

  1. linux 下搭建yolov3错误,Ubuntu20.04+cuda11.1+yolo3 目标检测 深度学习系统 真正从0搭建 包含各类可能遇到的错误...

    本篇文章包含内容较多,请参照目录浏览,在每一部分结束或,有该部分可能遇到的问题 0.开始本教程前请先备份电脑中的重要文件!!!! 一.Ubuntu20.04 搭建 更详细的内容请参照该博客:https ...

  2. RTX3060+ubuntu20.04+cuda11.1+cudnn8.0.5+pytorch1.7.1+tensorflow2.4构建深度学习环境

    由于2070显卡损坏,换成3060,造成了一系列影响,总共用了大概一周的时间,2个全天,重新配置深度学习环境. 问题:使用的早期版本的yolo模型,makefile文件编译不过,报错. 最直接的解决方 ...

  3. ubuntu20.04+GPU+CUDA11.1+cuDNN8.0.5+Miniconda3+pytorch1.8.1+torchversion0.9.1+pycharm

    目录 本机环境:拯救者R720+GeForce GTX1060+ubuntu20.04(不是双系统,windows10被我格掉了) 1.NVIDIA显卡安装 2.CUDA安装 3.cuDNN安装 4. ...

  4. Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0编译

    Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0环境搭建 1.Ubuntu20.04系统安装 1.1 制作系统盘 1 ...

  5. RTX2080+CUDA11.7+CUDNN8.6.0+ubuntu20.04+python3.8.10 部署和安装

    下载ubuntu Ubuntu分为桌面版(desktop)和服务器版(Server),ubuntu server没有GUI,没有一大堆的桌面软件.Ubuntu(乌班图)是一个以桌面应用为主的Linux ...

  6. openharmony编译报错ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor

    ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor 作者:坚果 公众号:" ...

  7. Ubuntu20.04下配置Anaconda3+NVIDIA 驱动+Cuda11.1+Cudnn8.0.5

    安装Ubuntu20.04 1.首先,拿出一个U盘,将官网下载的 Ubuntu20.04 刷进去制作成启动盘. 这里制作启动盘的软件我使用的是xxxx 2.分区设置(自定义四个分区) 因为我把 Ubu ...

  8. Ubuntu20.04环境下编译MNN

    前言 MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测.目前,MNN已经在阿里巴巴的手机淘宝.手机天猫.优酷等20多个App中使用,覆盖直播.短视频.搜索推荐.商品图像 ...

  9. Ubuntu20.04编译并运行imu_utils,并且标定IMU

    Ubuntu20.04编译并运行imu_utils,并且标定IMU 一.编译并运行imu_utils 1 安装依赖项 2 下载imu_utils和code_utils 2.1 code_utils编译 ...

最新文章

  1. 好多Javascript日期选择器呀-5
  2. json.dumps()、json.dump()、json.loads()和json.dumps()的区别
  3. 基于机器学习的web异常检测(转)
  4. 2ASK和2FSK相干解调误码率仿真matlab
  5. c++ 冒泡排序_学习笔记-详解冒泡排序
  6. php上下翻页,一个很不错的PHP翻页类
  7. Kafka 输入行太长 命令语法不正确
  8. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) H.有多短 思维
  9. keyloadtool_phoenix 利用CsvBulkLoadTool 批量带入数据并自动创建索引
  10. 糖果浏览器和139邮箱巧妙应用:将网页文字一键发送到手机上
  11. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
  12. opencv 学习之 亮度检测
  13. VC++实现快速截屏
  14. 行政区划代码(道路要素)
  15. 使用太乐地图下载器下载百度地图切片
  16. 基于层次分析法(AHP)的信贷案例详解
  17. Android Studio 插件整理
  18. 第10章:项目沟通管理和干系人管理-章节真题
  19. macos 升级到 Big Sur 虚拟机的鼠标能动但不能点击
  20. HTML5实现的树叶飘落动画特效

热门文章

  1. 手机可以打开MySQL的软件_太牛逼了!一款软件几乎可以操作所有的数据库!
  2. python字符串的内置函数_python——字符串内置函数
  3. 4招教你巧过面试性格测试关
  4. 【计算机毕设】JAVA010打飞机游戏设计
  5. 关于启动tomcatINFO警告错误问题解决
  6. 百度智能云服务器 笔记
  7. php 高深题,高深的脑筋急转弯题目
  8. android怎样实现自动点击功能
  9. JavaScript 可迭代对象
  10. 又逢六月毕业季!老学长聊一聊和导师相处的那些事儿~