国产计算框架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下载并安装: 

 

下载地址:

https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.0.5/11.1_20201106/cudnn-11.1-linux-x64-v8.0.5.39.tgz

 

 

 解压文件:

              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  Hello_BeautifulWorld  阅读(64)  评论(0编辑  收藏  举报

导航