当前位置:   article > 正文

昇思MindSpore(r1.9)源码编译安装_昇思 c++

昇思 c++

一、参考资料

MindSpore源码阅读系列(三):统一调试MindSpore Python与C++
MindSpore源码阅读系列(二):编译并调试MindSpore源码(对阅读源码很有帮助)

二、源码编译MindSpore(Ascend910版本)

源码编译方式安装MindSpore Ascend 910版本

1. 重要说明

  • 建议使用Anaconda虚拟环境,防止破坏系统中的Ascend环境。
  • MindSpore与CANN版本版本对齐,否则编译得到MindSpore软件包无法使用,详细步骤参见下文。
  • 如果是首次安装Ascend配套软件包,请按照“驱动 > 固件 > CANN”的顺序,分别安装驱动、固件包和CANN;覆盖安装请按照“固件 > 驱动 > CANN”的顺序,分别安装固件、驱动包和CANN。
  • 当默认路径存在安装包的时候,LD_LIBRARY_PATH 环境变量不起作用;默认路径优先级别为:/usr/local/Ascend/nnae 高于 /usr/loacl/Ascend/ascend-toolkit。原因是MindSpore采用 DT_RPATH 方式支持无环境变量启动,减少用户设置;DT_RPATH 优先级比 LD_LIBRARY_PATH 环境变量高。
  • Ascend配套软件包安装包默认安装路径为 /usr/local/Ascend。安装后确认当前用户有权限访问昇腾AI处理器配套软件包的安装路径,若无权限,需要root用户将当前用户添加到 /usr/local/Ascend 所在的用户组。

2. 准备工作

2.1 MindSpore与Ascend配套软件包版本对齐

通过 链接 查询MindSpore与Ascend配套软件包的版本配套关系。
在这里插入图片描述

2.2 Ascend配套软件包

安装Ascend配套软件包的详细步骤,请参考另一篇博客:快速安装Ascend配套软件包

3. 下载源码

以MindSpore1.9版本为例。

git clone https://gitee.com/mindspore/mindspore.git -b r1.9
  • 1

4. 编译

cd mindspore

# 编译Ascend910版本
bash build.sh -e ascend -S on

# 编译CPU版本
bash build.sh -e cpu -S on
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
time bash build.sh -d -t ut -S on
  • 1

4.1 CPU版本

源码编译方式安装MindSpore CPU版本

源码编译方式安装MindSpore CPU版本(含第三方依赖)

# time bash build.sh -e cpu -S on
...
...
...
adding 'mindspore-1.9.1.dist-info/METADATA'
adding 'mindspore-1.9.1.dist-info/WHEEL'
adding 'mindspore-1.9.1.dist-info/entry_points.txt'
adding 'mindspore-1.9.1.dist-info/top_level.txt'
adding 'mindspore-1.9.1.dist-info/RECORD'
removing build/bdist.linux-aarch64/wheel
CPack: - package: /data/YOYOFile/mindspore/build/mindspore/mindspore generated.
success building mindspore project!
---------------- MindSpore: build end   ----------------

real    109m37.807s
user    822m49.398s
sys     54m14.307s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

输出

output/mindspore-1.9.1-cp39-cp39-linux_aarch64.whl
output/mindspore-1.9.1-cp39-cp39-linux_aarch64.whl.sha256
  • 1
  • 2

4.2 Ascend910版本

# time bash build.sh -e ascend -S on
...
...
...
adding 'mindspore_ascend-1.9.1.dist-info/METADATA'
adding 'mindspore_ascend-1.9.1.dist-info/WHEEL'
adding 'mindspore_ascend-1.9.1.dist-info/entry_points.txt'
adding 'mindspore_ascend-1.9.1.dist-info/top_level.txt'
adding 'mindspore_ascend-1.9.1.dist-info/RECORD'
removing build/bdist.linux-aarch64/wheel
CPack: - package: /data/YOYOFile/mindspore/build/mindspore/mindspore generated.
success building mindspore project!
---------------- MindSpore: build end   ----------------

real    128m6.095s
user    925m10.682s
sys     56m32.674s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
# time bash build.sh -e ascend -S on
...
...
...
[100%] Built target _mindspore_frontend_parallel_obj
[100%] Linking CXX static library libmindspore.a
[100%] Built target mindspore
Consolidate compiler generated dependencies of target _c_expression
[100%] Linking CXX shared library _c_dataengine.cpython-39-aarch64-linux-gnu.so
[100%] Building CXX object mindspore/ccsrc/CMakeFiles/_c_expression.dir/pipeline/jit/init.cc.o
[100%] Built target _c_dataengine
Consolidate compiler generated dependencies of target cache_admin
Consolidate compiler generated dependencies of target cache_server
[100%] Building CXX object mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/cache_server.dir/cache_main.cc.o
[100%] Building CXX object mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/cache_admin.dir/cache_admin.cc.o
[100%] Building CXX object mindspore/ccsrc/minddata/dataset/engine/cache/CMakeFiles/cache_admin.dir/cache_admin_arg.cc.o
[100%] Linking CXX executable cache_server
[100%] Built target cache_server
[100%] Linking CXX executable cache_admin
[100%] Built target cache_admin
[100%] Linking CXX shared module _c_expression.cpython-39-aarch64-linux-gnu.so
[100%] Built target _c_expression
Run CPack packaging tool...
CPack: Create package using External
CPack: Install projects
CPack: - Clean temporary : /data/YOYOFile/mindspore/build//package/mindspore
CPack: - Install project: MindSpore []
CPack: Create package
...
...
...
adding 'mindspore_ascend-1.9.1.dist-info/METADATA'
adding 'mindspore_ascend-1.9.1.dist-info/WHEEL'
adding 'mindspore_ascend-1.9.1.dist-info/entry_points.txt'
adding 'mindspore_ascend-1.9.1.dist-info/top_level.txt'
adding 'mindspore_ascend-1.9.1.dist-info/RECORD'
removing build/bdist.linux-aarch64/wheel
CPack: - package: /data/YOYOFile/mindspore/build/mindspore/mindspore generated.
success building mindspore project!
---------------- MindSpore: build end   ----------------

real    127m5.367s
user    911m16.674s
sys     48m24.587s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

输出

output/mindspore_ascend-1.9.1-cp39-cp39-linux_aarch64.whl
output/mindspore_ascend-1.9.1-cp39-cp39-linux_aarch64.whl.sha256
  • 1
  • 2

5. 安装

在联网状态下,安装whl包时会自动下载MindSpore安装包的依赖项(依赖项详情参见setup.py中的required_package),其余情况需自行安装。运行模型时,需要根据ModelZoo中不同模型指定的requirements.txt安装额外依赖,常见依赖可以参考requirements.txt

pip install output/mindspore-*.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

6. 配置环境变量

LOCAL_ASCEND=/usr/local/Ascend昇腾AI处理器配套软件包默认安装路径

# control log level. 0-DEBUG, 1-INFO, 2-WARNING, 3-ERROR, 4-CRITICAL, default level is WARNING.
export GLOG_v=2

# Conda environmental options
LOCAL_ASCEND=/usr/local/Ascend # the root directory of run package

# lib libraries that the run package depends on
export LD_LIBRARY_PATH=${LOCAL_ASCEND}/ascend-toolkit/latest/lib64:${LOCAL_ASCEND}/driver/lib64:${LOCAL_ASCEND}/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling:${LD_LIBRARY_PATH}

# Environment variables that must be configured
## TBE operator implementation tool path
export TBE_IMPL_PATH=${LOCAL_ASCEND}/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe

## OPP path
export ASCEND_OPP_PATH=${LOCAL_ASCEND}/ascend-toolkit/latest/opp

## AICPU path
export ASCEND_AICPU_PATH=${ASCEND_OPP_PATH}/..

## TBE operator compilation tool path
export PATH=${LOCAL_ASCEND}/ascend-toolkit/latest/compiler/ccec_compiler/bin/:${PATH}

## Python library that TBE implementation depends on
export PYTHONPATH=${TBE_IMPL_PATH}:${PYTHONPATH}

# Set path to extracted MindSpore accordingly
export LD_LIBRARY_PATH={mindspore_path}:${LD_LIBRARY_PATH}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

参数解释

  • {mindspore_path}表示MindSpore二进制包所在位置的绝对路径。

7. 验证是否成功安装

7.1 方法一

python -c "import mindspore;mindspore.run_check()"
  • 1
MindSpore version: 版本号
The result of multiplication calculation is correct, MindSpore has been installed successfully!
  • 1
  • 2
(ms19) root@80f9a288c6ba:~# python -c "import mindspore;mindspore.run_check()"
MindSpore version:  1.9.0
The result of multiplication calculation is correct, MindSpore has been installed successfully!
  • 1
  • 2
  • 3

7.2 方法二

import numpy as np
import mindspore as ms
import mindspore.ops as ops

ms.set_context(device_target="Ascend")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
[[[[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]

  [[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]

  [[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

8. 本地源码编译升级

在源码根目录下执行编译脚本build.sh成功后,在output目录下找到编译生成的whl安装包,然后执行命令进行升级。

pip install --upgrade output/mindspore-*.whl
  • 1

三、源码编译MindSpore(Ascend310版本)

源码编译方式安装MindSpore Ascend 310版本

整体步骤与Ascend910一致,这里仅记录差异的地方,需要特别注意。

1. 编译

cd mindspore

# 编译Ascend310版本
bash build.sh -e ascend -V 310 -S on
  • 1
  • 2
  • 3
  • 4
# time bash build.sh -e ascend -V 310 -S on
...
...
...
Run CPack packaging tool...
CPack: Create package using TGZ
CPack: Install projects
CPack: - Run preinstall target for: MindSpore
CPack: - Install project: MindSpore []
CPack: Create package
CPack: - package: /data/YOYOFile/mindspore/output/mindspore_ascend-1.9.1-linux_aarch64.tar.gz generated.
CPack: - checksum file: /data/YOYOFile/mindspore/output/mindspore_ascend-1.9.1-linux_aarch64.tar.gz.sha256 generated.
success building mindspore project!
acl mode, skipping deploy phase
---------------- MindSpore: build end   ----------------

real    68m39.293s
user    511m36.950s
sys     25m28.390s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输出

output/mindspore_ascend-1.9.1-linux_aarch64.tar.gz
output/mindspore_ascend-1.9.1-linux_aarch64.tar.gz.sha256
  • 1
  • 2

2. 安装

由于Ascend310是推理卡,源码编译Ascend310版本的MindSpore软件包只能用于推理,用于真实生产环境

tar -zxf output/mindspore_ascend-*.tar.gz
  • 1

3. 配置环境变量

...
...
# 其他环境变量配置,与Ascend910一致
# Set path to extracted MindSpore accordingly
export LD_LIBRARY_PATH={mindspore_path}:${LD_LIBRARY_PATH}
  • 1
  • 2
  • 3
  • 4
  • 5

解释说明

  • {mindspore_path}表示MindSpore二进制包所在位置的绝对路径。

4. 验证是否安装成功

创建目录放置样例代码工程,例如/home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/acllib_linux.arm64/sample/acl_execute_model/ascend310_single_op_sample,代码可以从官网示例下载获取,这是一个[1, 2, 3, 4][2, 3, 4, 5]相加的简单样例,代码工程目录结构如下:

└─ascend310_single_op_sample
    ├── CMakeLists.txt                    // 编译脚本
    ├── README.md                         // 使用说明
    ├── main.cc                           // 主函数
    └── tensor_add.mindir                 // MindIR模型文件
  • 1
  • 2
  • 3
  • 4
  • 5
# 进入样例工程目录,按照实际情况修改路径路径
cd /home/HwHiAiUser/Ascend/ascend-toolkit/20.0.RC1/acllib_linux.arm64/sample/acl_execute_model/ascend310_single_op_sample

# 编译
# {mindspore_path}表示MindSpore二进制包所在位置的绝对路径
cmake . -DMINDSPORE_PATH={mindspore_path}
make

# 执行
./tensor_add_sample
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
root@44ff3bb0ad1d:/data/YOYOFile/Downloads/ascend310_single_op_sample# cmake . -DMINDSPORE_PATH=/data/YOYOFile/Downloads/mindspore_ascend-1.6.2-linux_aarch64
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /data/YOYOFile/Downloads/ascend310_single_op_sample
root@44ff3bb0ad1d:/data/YOYOFile/Downloads/ascend310_single_op_sample# make -j4
Consolidate compiler generated dependencies of target tensor_add_sample
[ 50%] Building CXX object CMakeFiles/tensor_add_sample.dir/main.cc.o
[100%] Linking CXX executable tensor_add_sample
[100%] Built target tensor_add_sample
root@44ff3bb0ad1d:/data/YOYOFile/Downloads/ascend310_single_op_sample# ./tensor_add_sample
3
5
7
9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/843548
推荐阅读
相关标签
  

闽ICP备14008679号