import报错:Load dynamic library libmindspore_ascend failed,以及定位解决
收藏回复举报
import报错:Load dynamic library libmindspore_ascend failed,以及定位解决
发表于2022-12-02 10:49:11
0 查看

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend

MindSpore版本: 不限版本

执行模式(动态图): 不限模式

Python版本: 3.7/3.8/3.9

操作系统平台: linux

2 报错信息

2.1 问题描述

在系统上安装MindSpore后,import失败

2.2 报错信息

import mindspore

[WARNING] ME(63118:139781560567616,MainProcess):2022-10-28-22:52:09.840.358 [mindspore/run_check/_check_version.py:287] Using custom Ascend AI software package (Ascend Data Center Solution) path, package version checking is skipped, please make sure Ascend AI software package (Ascend Data Center Solution) version is supported, you can reference to the installation guidelines cid:link_0

[ERROR] ME(63118,7f216e438740,python):2022-10-28-22:52:10.017.779 [mindspore/ccsrc/runtime/hardware/device_context_manager.cc:46] LoadDynamicLib] Load dynamic library libmindspore_ascend failed, returns [/home/zzz/miniconda3/envs/hznmb/lib/python3.9/site-packages/mindspore/lib/plugin/libmindspore_ascend.so: undefined symbol: _ZN3Adx18AdxDataDumpProcess25MessageCallbackUnRegisterEv].

[WARNING] ME(63118:139781560567616,MainProcess):2022-10-28-22:52:10.474.98 [mindspore/run_check/_check_version.py:389] Can not find ccec_compiler(need by mindspore-ascend), please check if you have set env PATH, you can reference to the installation guidelines cid:link_0

[WARNING] ME(63118:139781560567616,MainProcess):2022-10-28-22:52:10.476.59 [mindspore/run_check/_check_version.py:400] Can not find driver so(need by mindspore-ascend), please check if you have set env LD_LIBRARY_PATH, you can reference to the installation guidelines cid:link_0

Segmentation fault (core dumped)

2.3 脚本代码

import mindspore

3 根因分析

从报错信息的warning和error信息中可以初步猜测,大概是因为安装mindspore前没有安装昇腾AI处理器配套软件包,或者没有正确设置LD_LIRARY_PATH等环境变量,导致找不到许多mindspore依赖的动态链接库。 下面详细分析各个报错信息:

  1. warning:

    [WARNING] ME(63118:139781560567616,MainProcess):2022-10-28-22:52:09.840.358 [mindspore/run_check/_check_version.py:287] Using custom Ascend AI software package (Ascend Data Center Solution) path, package version checking is skipped, please make sure Ascend AI software package (Ascend Data Center Solution) version is supported, you can reference to the installation guidelines cid:link_0

查看_check_version.py的287行发现,发现是因为self.fwk_version文件不存在

285     def check_version(self):
286         if not Path(self.fwk_version).is_file():
287             logger.warning("Using custom Ascend AI software package (Ascend Data Center Solution) path, package "
288                            "version checking is skipped, please make sure Ascend AI software package (Ascend Data "
289                            "Center Solution) version is supported, you can reference to the installation guidelines "
290                            "cid:link_0")
291             return

fwk_version通过以下变量赋值:

226         atlas_nnae_version = "/usr/local/Ascend/nnae/latest/compiler/version.info"
227         atlas_toolkit_version = "/usr/local/Ascend/ascend-toolkit/latest/compiler/version.info"
228         hisi_fwk_version = "/usr/local/Ascend/latest/compiler/version.info"

进一步说明可能昇腾AI处理器配套软件包没有正确安装。

  1. error

    [ERROR] ME(63118,7f216e438740,python):2022-10-28-22:52:10.017.779 [mindspore/ccsrc/runtime/hardware/device_context_manager.cc:46] LoadDynamicLib] Load dynamic library libmindspore_ascend failed, returns [/home/zzz/miniconda3/envs/hznmb/lib/python3.9/site-packages/mindspore/lib/plugin/libmindspore_ascend.so: undefined symbol: _ZN3Adx18AdxDataDumpProcess25MessageCallbackUnRegisterEv].

通过以下命令,进入到libmindspore_ascend.so的目录查看该so依赖的动态库

cd /home/zzz/miniconda3/envs/hznmb/lib/python3.9/site-packages/mindspore/lib/plugin/ readelf -d libmindspore_ascend.so | grep rpath

输出

0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/lib:$ORIGIN/lib/plugin:$ORIGIN/..::/usr/local/Ascend/nnae/latest/lib64:/usr/local/Ascend/ascend-toolkit/latest/lib64:/usr/local/Ascend/latest/lib64:/usr/local/Ascend/opp/op_impl/built-in/ai_core/tbe/op_tiling:/usr/local/Ascend/nnae/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling:/usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling:/usr/local/Ascend/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling]

再进一步查看服务器和LD_LIBRARY_PATH中是否存在这些的路径。

  1. warning

[WARNING] ME(63118:139781560567616,MainProcess):2022-10-28-22:52:10.474.98 [mindspore/run_check/_check_version.py:389] Can not find ccec_compiler(need by mindspore-ascend), please check if you have set env PATH, you can reference to the installation guidelines cid:link_0

ccec_compiler是mindspore用于编译算子的工具,一般在昇腾AI处理器配套软件包中安装,安装完成后需要将bin加入到PATH环境变量

4 解决方案

  1. 按照mindspore官网指南安装昇腾AI处理器配套软件包https://mindspore.cn/install
  2. 按照mindspore官网中配置以下环境变量
# 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}

PS:可以将以上环境变量设置写成一个bash文件,在打开终端时执行。

我要发帖子