转载地址:https://bbs.huaweicloud.com/forum/thread-143140-1-1.html

作者: devilmaycry

编译之前需要完成依赖环境的安装,具体请看:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=143084

编译前之前的工作这里不再叙述。

本文原文地址:

https://www.cnblogs.com/devilmaycry812839668/p/15060119.html

-------------------------------------------------------------------------------------------------------

正文内容:

必要环境已经全部安装好,开始编译工作,源代码下载:

git clone https://gitee.com/mindspore/mindspore.git -b r1.3

源代码下载好以后我们先不进行源码编译,因为源代码中有部分bug没有修复,如果我们直接进行编译的话则会报错。

具体信息见:

https://www.cnblogs.com/devilmaycry812839668/p/15042017.html

https://www.cnblogs.com/devilmaycry812839668/p/15054624.html

https://www.cnblogs.com/devilmaycry812839668/p/15059000.html

由文章:https://www.cnblogs.com/devilmaycry812839668/p/15059000.html

中给出的bug修复方式我们进行修改。

修改mindspore源代码  分支:r1.3 下对应的文件:

cmake/external_libs/ompi.cmake

修改后的完整内容:

if(ENABLE_GITEE)set(REQ_URL "https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.3.tar.gz")set(MD5 "f4be54a4358a536ec2cdc694c7200f0b")
else()set(REQ_URL "https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.3.tar.gz")set(MD5 "f4be54a4358a536ec2cdc694c7200f0b")
endif()set(ompi_CXXFLAGS "-D_FORTIFY_SOURCE=2 -O2")
mindspore_add_pkg(ompiVER 4.0.3LIBS mpiURL ${REQ_URL}MD5 ${MD5}PRE_CONFIGURE_COMMAND ./configureCONFIGURE_COMMAND ./configure)
include_directories(${ompi_INC})
add_library(mindspore::ompi ALIAS ompi::mpi)

使用help参数来查看编译时参数的设置:

bash build.sh -h

---------------- MindSpore: build start ----------------
Usage:
bash build.sh [-d] [-r] [-v] [-c on|off] [-t ut|st] [-g on|off] [-h] [-b ge] [-m infer|train] \[-a on|off] [-p on|off] [-i] [-R] [-D on|off] [-j[n]] [-e gpu|ascend|cpu] \[-P on|off] [-z [on|off]] [-M on|off] [-V 10.1|11.1|310|910] [-I arm64|arm32|x86_64] [-K] \[-B on|off] [-E] [-l on|off] [-n full|lite|off] [-H on|off] \[-A on|off] [-S on|off] [-k on|off] [-W sse|neon|avx|avx512|off] \[-L Tensor-RT path]  \Options:-d Debug mode-r Release mode, default mode-v Display build command-c Enable code coverage, default off-t Run testcases, default off-g Use glog to output log, default on-h Print usage-b Select other backend, available: \ge:graph engine-m Select graph engine backend mode, available: infer, train, default is infer-a Enable ASAN, default off-p Enable pipeline profile, print to stdout, default off-R Enable pipeline profile, record to json, default off-i Enable increment building, default off-j[n] Set the threads when building (Default: -j8)-e Use cpu, gpu or ascend-s Enable security, default off-P Enable dump anf graph to file in ProtoBuffer format, default on-D Enable dumping of function graph ir, default on-z Compile dataset & mindrecord, default on-n Compile minddata with mindspore lite, available: off, lite, full, lite_cv, full mode in lite train and lite_cv, wrapper mode in lite predict-M Enable MPI and NCCL for GPU training, gpu default on-V Specify the device version, if -e gpu, default CUDA 10.1, if -e ascend, default Ascend 910-I Enable compiling mindspore lite for arm64, arm32 or x86_64, default disable mindspore lite compilation-A Enable compiling mindspore lite aar package, option: on/off, default: off-K Compile with AKG, default on-B Enable debugger, default on-E Enable IBVERBS for parameter server, default off-l Compile with python dependency, default on-S Enable enable download cmake compile dependency from gitee , default off-k Enable make clean, clean up compilation generated cache -W Enable x86_64 SSE or AVX instruction set, use [sse|neon|avx|avx512|off], default off for lite and avx for CPU-H Enable hidden-L Link and specify Tensor-RT library path, default disable Tensor-RT lib linking

启动前文安装的Python环境:

conda activate ms

从帮助信息中(-S Enable enable download cmake compile dependency from gitee , default off)我们可以知道在编译时我们可以选择使用gitee源的地址,这样会大大提供编译时依赖文件的下载速度,因此完整的编译命令如下:

bash build.sh -e gpu -S on

发现编译报错:

make: *** [all] Error 2

----------------------------------------------------------------------------------

(可忽略部分开始:)

这部分内容为定位error并修正,实际安装时不需要这一步骤:

修改编译命令,进行编译错误定位:

(默认是多线程编译,即-j8,可以快速的进行依赖文件下载和编译,但是不利于error定位,我们先使用默认的方式编译可以快速的进行依赖文件下载和部分编译)

bash build.sh -e gpu -S on -j1

提示出具体的报错信息:

[100%] Linking CXX shared library libmindspore.so
[100%] Built target mindspore_shared_lib
[100%] Linking CXX shared library _c_dataengine.cpython-37m-x86_64-linux-gnu.so
[100%] Built target _c_dataengine
Consolidate compiler generated dependencies of target engine-cache-server
[100%] Building CXX object mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/cache_hw.cc.o
/tmp/mindspore/mindspore/ccsrc/minddata/dataset/engine/cache/cache_hw.cc: 在构造函数‘mindspore::dataset::CacheServerHW::CacheServerHW()’中:
/tmp/mindspore/mindspore/ccsrc/minddata/dataset/engine/cache/cache_hw.cc:42:45: 错误:从类型‘int64_t* {aka long int*}’到类型‘long long int*’的转换无效 [-fpermissive]int64_t mem_avail = numa_node_size(i, &free_avail);^~~~~~~~~~~
In file included from /tmp/mindspore/mindspore/ccsrc/minddata/dataset/engine/cache/cache_hw.h:20:0,from /tmp/mindspore/mindspore/ccsrc/minddata/dataset/engine/cache/cache_hw.cc:16:
/usr/local/include/numa.h:146:11: 附注:  初始化‘long long int numa_node_size(int, long long int*)’的实参 2long long numa_node_size(int node, long long *freep);^~~~~~~~~~~~~~
在全局域:
cc1plus: 错误:unrecognized command line option ‘-Wno-stringop-truncation’ [-Werror]
cc1plus: 错误:unrecognized command line option ‘-Wno-class-memaccess’ [-Werror]
cc1plus:所有的警告都被当作是错误
mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/build.make:148: recipe for target 'mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/cache_hw.cc.o' failed
make[2]: *** [mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/cache_hw.cc.o] Error 1
CMakeFiles/Makefile2:3127: recipe for target 'mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/all' failed
make[1]: *** [mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/engine-cache-server.dir/all] Error 2
Makefile:155: recipe for target 'all' failed
make: *** [all] Error 2

错误定位的文件位置:

mindspore/mindspore/ccsrc/minddata/dataset/engine/cache/cache_hw.cc:42:45

错误信息:

从类型‘int64_t* {aka long int*}’到类型‘long long int*’的转换无效 [-fpermissive]
       int64_t mem_avail = numa_node_size(i, &free_avail);

从该定位到的错误可以知道是编译过程中生成的代码中存在类型转换错误,于是进行修改:

将报错语句修改为:

int64_t mem_avail = numa_node_size(i, reinterpret_cast <long long int *>(&free_avail));

然后重新进行编译即可。

(可忽略部分结束。)

----------------------------------------------------------------------------------

我们可以直接跨过上面的可忽略部分中的错误定位(即,bash build.sh -e gpu -S on -j1)直接对文件进行修改,然后重新编译:

bash build.sh -e gpu -S on

成功编译:

编译完成后生成的MindSpore WHL安装包路径为:

build/package/mindspore_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl;

将我们编译好的文件拷贝出来,在我们激活的Python环境下进行安装即可:

pip install mindspore_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl

运行官网中的测试代码:

import numpy as np
from mindspore import Tensor
import mindspore.ops as ops
import mindspore.context as contextcontext.set_context(device_target="GPU")
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.tensor_add(x, y))

成功运行:

证明我们编译后的最终文件可以成功安装并运行,编译工作成功完成。

mindspore 1.3.0版本GPU环境下源码编译的正式工作——完整的编译过程相关推荐

  1. mindspore 1.3.0版本GPU环境下源码编译前的准备工作——依赖环境的安装

    转载地址: 作者: 原文地址: 国产计算框架mindspore在gpu环境下编译分支r1.3,使用suod权限成功编译并安装,成功运行--(修复部分bug,给出具体编译和安装过程) 链接: https ...

  2. 在Debian64环境下源码安装newLisp v10.6.0

    为什么80%的码农都做不了架构师?>>>    起因:官方网站上没有适合Debian64的二进制安装包,用源码包直接make时会失败,这里给出解决方法. 1,从官网(http://w ...

  3. Centos 7环境下源码安装PostgreSQL数据库

    马上就要去实习了,工作内容是搞数据仓库方面的,用的是postgresql关系型数据库,于是自己先来了解下这种数据的用法,之后说说这个数据库和MySQL的关系和区别. 1.Postgresql简介 看了 ...

  4. debian php redis,debian7.7环境下 源码安装redis以及phpredis扩展

    先进入到redis的官网,下载redis安装包 wget http://download.redis.io/releases/redis-3.0.5.tar.gz 放到/usr/local/src目录 ...

  5. Android4.1 Jelly Bean ubuntu10.04/64环境下 源码编译 初初级

    2019独角兽企业重金招聘Python工程师标准>>> 首先交代一下自己本不是IT 行业,也没有编程基础,而且刚接触Android和Ubuntu,小白一枚, 花了将近半个月的时间,重 ...

  6. 源码安装mysql 5.1_Linux环境下源码编译安装MySQL5.1

    1.源码安装MySQL 5.1 GA 创建组和用户: [root@mysqldb2 ~]# groupadd mysql [root@mysqldb2 ~]# useradd -g mysql mys ...

  7. Linux环境下源码编译方式安装MySQL5.1(1)

    1.源码安装MySQL 5.1 GA 创建组和用户: [root@mysqldb2 ~]# groupadd mysql [root@mysqldb2 ~]# useradd -g mysql mys ...

  8. 苹果CMS模板MxPro主题V 2.0版本全解密影视源码+一键采集+搭建教程

    源码介绍 MxPro主题V2.0全解密苹果CMS模板影视源码,模板写的很好,这套是修复版,简单修复了下分享二维码尺寸和访问网页跳转别的网站的问题. 如果之前使用过网上有暗门的模板,可以直接替换,也可以 ...

  9. 缺少nst linux.mbr文件,用EasyBCD2.0在Windows环境下引导Linux启动

    用EasyBCD2.0在Windows环境下引导Linux启动 以在Win7环境下用EasyBCD2.0.2引导Ubuntu启动为例(Ubuntu安装在Win7之前,倘若反了进不去Win7,可以用Wi ...

最新文章

  1. YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程
  2. 团队-象棋游戏-模块开发过程
  3. Kafka如何对Topic元数据进行细粒度的懒加载、同步等待?
  4. [转] 为什么javascript是单线程的却能让AJAX异步调用?
  5. 如何更改vs默认调试浏览器
  6. 1-jdk的安装与配置
  7. 矩形法_字体设计 | 新手必学,超简单的矩形造字法!!
  8. 未来的计算机作文100,未来的自己作文100字
  9. mplayer-php,mplayer+smplayer 前后端播放器安装
  10. thread类_Python线程:thread对象
  11. python免费教程视频-Python免费视频教程
  12. Linux多线程编程之员工信息管理系统
  13. 微信小程序云开发教程-后端接口分析和接口返回值的格式定义
  14. 毕业论文中计算机代码重复吗,知网查重程序代码算重复吗?
  15. 如何求100万长度的数组的中间值元素,采用定向数组只需6个毫秒的算法
  16. 人工智能测试-爬百度成语-测成语接龙
  17. 详解InnoDB的Buffer Pool
  18. 13. 中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值5钱,一只母鸡值3钱,三只小鸡值1钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
  19. 第十六届全国大学生智能车竞赛线上全国总决赛裁判手册
  20. 人声计算机音乐,将人声转成MIDI imitone会哼哼就会作曲音乐软件

热门文章

  1. 【Ubuntu】reids客户端(GUI) Medis编译打包
  2. 安卓手机刷机liunx服务器_Android手机通用刷机教程,小白必看!
  3. selenium click点击无反应问题
  4. 第112章 Caché 函数大全 $ZPOSITION 函数
  5. Codeforces Round #807 (Div. 2)A~E个人题解
  6. AcWing寒假每日一题 2058.笨拙的手指
  7. LIO-SAM:点云预处理前端---畸变矫正数据预处理
  8. 硅谷首富:拉里 埃里森
  9. 冰天雪地摄影技巧创意色彩指南
  10. 吃透Java并发:AQS结构详解及其CLH变种、CLH、MCS