国产计算框架mindspore在gpu环境下编译分支r1.3,使用suod权限成功编译并安装,成功运行——(修复部分bug,给出具体编译和安装过程)—— 第一部分:依赖环境的安装
国产计算框架MindSpore的r1.3分支源代码存在部分bug,导致无法从源码方式进行gpu环境下的编译。
具体参看:
https://www.cnblogs.com/devilmaycry812839668/p/15059000.html
https://www.cnblogs.com/devilmaycry812839668/p/15054624.html
本文给出对r1.3分支存在的部分bug就行修正,然后成功进行编译,并验证编译后的文件可以正常运行,证明本文方式可以成功解决r1.3分支无法在gpu环境下进行编译的问题。本文给出具体的安装步骤及具体bug的修改方式。
计算框架mindspore的官网:
https://www.mindspore.cn/install
r1.3是当下最新发布的版本,因此这里选择对该版本下的gpu环境下进行编译。
需要的依赖软件:
==========================================================
经过验证如果不使用sudo权限的话需要对mindspore的源码中的cmake文件进行大幅度修改,因此本文都是在具有sudo权限下进行的。
操作系统:Ubuntu18.04
CPU:i7 9700k
GPU: RTX 2060SUPER
依赖环境的安装:
1. 安装CUDA11.1.0 和 cuDNN 8.0.X版本:
下载cuda源码并安装:
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
sudo sh ./cuda_11.1.0_455.23.05_linux.run --toolkit --silent
cuDnn下载并安装:
下载地址:
解压文件:
tar -zxvf cudnn-11.1-linux-x64-v8.0.5.39.tgz
拷贝解压后的文件到cuda安装目录内:
sudo cp cuda/include/* /usr/local/cuda-11.1/include
sudo cp cuda/lib64/* /usr/local/cuda-11.1/lib64
配置环境变量:
修改 .bashrc 文件
export PATH=/usr/local/cuda-11.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
重新载入 .bashrc 文件:
source ~/.bashrc
2. GCC的安装:
下载gcc 7.3.0版本安装包,执行以下命令:
wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
执行tar -xzf gcc-7.3.0.tar.gz
解压源码包。
执行cd gcc-7.3.0
,进入到源码包目录。
继续下面操作前清空系统内的环境变量:
export LIBRARY_PATH=
export LD_LIBRARY_PATH=
export C_INCLUDE_PATH=
export CPLUS_INCLUDE_PATH=
运行以下命令,进行安装前的配置。
安装依赖环境:
./contrib/download_prerequisites
配置环境:
./configure --enable-bootstrap -enable-threads=posix --enable-checking=release --enable-languages=c,c++ --disable-multilib
编译安装:
make -j8 && sudo make install
3. m4 下载安装:
下载:
wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.bz2
解压:
tar -jxvf m4-1.4.16.tar.bz2
修改m4_1.4.16下源文件中代码:(https://blog.csdn.net/weixin_34168880/article/details/91842744)
vi lib/stdio.in.h
查找字段:gets is a security hole
注释:
将_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); 字段和他之前的注释 /* 一块注释掉,如下
/* It is very rare that the developer ever has full control of stdin,
so any use of gets warrants an unconditional warning. Assume it is
always declared, since it is required by C89.
#undef gets
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); */
再添加如下内容:
#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
配置:
./configure
编译安装
make &&sudo make install
4. 安装gmp 6.1.2
下载gmp 6.1.2
源码包:
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
解压到当前文件夹:
tar -xvf gmp-6.1.2.tar.xz
配置:
./configure --enable-cxx
编译安装:
make && sudo make install
测试 gmp 是否安装并配置成功:(声明:测试部分内容源于:https://blog.csdn.net/just_h/article/details/82667787)
代码:
# test.cpp 文件
#include <gmpxx.h> #include <iostream> #include <stdio.h> using namespace std; int main() { mpz_t a,b,c; mpz_init(a); mpz_init(b); mpz_init(c); gmp_scanf("%Zd%Zd",a,b); mpz_add(c,a,b); gmp_printf("c= %Zd\n",c); return 0; }
编译:
g++ test.cpp -o test -lgmp
运行:
5. openssl 的安装:
下载地址:
https://www.openssl.org/source/openssl-1.1.1k.tar.gz
解压:
tar -zxvf openssl-1.1.1k
配置:
./config
编译并安装:
make -j8&& sudo make install
配置系统环境: 修改 .bashrc 文件,添加内容:
# openssl
export OPENSSL_ROOT_DIR=/usr/local/lib64
重新载入 .bashrc 文件:
source ~/.bashrc
说明: 前5步的依赖环境的安装足够使用pip安装的方式安装mindspore1.3.0版本,具体参看:
https://www.cnblogs.com/devilmaycry812839668/p/15055035.html
6. CMAKE的安装 (前面几步操作make的时候都是使用系统自带的旧版本cmake,这里的cmake安装是为编译mindspore用的)
下载文件:
wget https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0.tar.gz
解压:
tar -zxvf cmake-3.21.0.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
配置系统环境: 修改 .bashrc 文件,添加内容:(为cmake指定调用何处的gcc与g++,否则可能会调用系统中以前版本的gcc与g++)
# CC export CC=/usr/local/bin/gcc export CXX=/usr/local/bin/g++
重新载入 .bashrc 文件:
source ~/.bashrc
7. patch 的安装:
下载文件:
wget https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.gz
解压:
tar -zxvf patch-2.7.6.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
8. 安装Autoconf
下载文件:
wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz
解压:
tar -zxvf autoconf-2.71.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
9. 安装 libtool
下载地址:
wget https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
解压:
tar -zxvf libtool-2.4.6.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
10. 安装automake
下载:
wget https://ftp.gnu.org/gnu/automake/automake-1.16.3.tar.gz
解压:
tar -zxvf automake-1.16.3.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
11. 安装flex
下载文件:
wget https://github.com/westes/flex/files/981163/flex-2.6.4.tar.gz
解压:
tar -zxvf flex-2.6.4.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
12. 安装NUMA
官网建议安装方式:
apt-get install libnuma-dev
这里给出个人的安装方式,本人并没有使用官方的安装方式:
首先卸载系统中的numa环境:
sudo apt-get remove libnuma-dev
手动安装numa:
下载:
wget https://github.com/numactl/numactl/releases/download/v2.0.14/numactl-2.0.14.tar.gz
解压:
tar -zxvf numactl-2.0.14.tar.gz
配置:
./configure
编译并安装:
make -j8&& sudo make install
13. 确认安装git工具(一般系统里都有git,这一步基本可以忽略)
如果未安装,使用如下命令下载安装:
sudo apt-get install git
以上为依赖环境的安装(除Python外)。
=====================================================================
安装运行mindspore的Python环境,这里为方便直接选择用anaconda方式创建:
Python环境3.7.5, 为anaconda创建,命令:
conda create -n ms python=3.7.5
激活Python环境:
conda activate ms
注意: anaconda创建的Python环境自带wheel,因此这里不用再手动安装wheel。
如果Python环境下没有wheel需要手动安装,方式如下:
安装wheel:
pip install wheel
==========================================================
本文参考:
https://www.mindspore.cn/news/newschildren?id=401
posted on 2021-07-25 21:29 Angry_Panda 阅读(233) 评论(0) 编辑 收藏 举报