昇腾MindSpore 找不到tbe operator implementation错误

总结

因为 MindSpore 在 Ascend NPU 模式下找不到 TBE(Tensor Boost Engine)算子实现的路径,而这些算子实现是运行在华为 Ascend NPU 上所必须的。

很像 tf,pytorch找不到cudnn就不能正常使用gpu

在 ~/.bashrc 文件添加:

# ASCEND 软件安装根路径(根据实际安装路径调整)
export ASCEND_HOME=/usr/local/Ascend

# TBE 算子实现路径(给 PYTHONPATH)
export TBE_IMPL_PATH=${ASCEND_HOME}/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe
export PYTHONPATH=${TBE_IMPL_PATH}:${PYTHONPATH}

# OPP 路径(算子描述文件)
export ASCEND_OPP_PATH=${ASCEND_HOME}/ascend-toolkit/latest/opp

# 编译器路径(ccec_compiler)
export PATH=${ASCEND_HOME}/ascend-toolkit/latest/compiler/ccec_compiler/bin:${PATH}

# 动态库路径(驱动 + 运行库)
export LD_LIBRARY_PATH=${ASCEND_HOME}/ascend-toolkit/latest/lib64:${ASCEND_HOME}/driver/lib64:${ASCEND_HOME}/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe/op_tiling:${LD_LIBRARY_PATH}

执行 source ~/.bashrc

华为云 notebook 不改配置 .bashrc 设置方法

在notebook 最顶端添加一个单元格, 并运行

import os
import sys

# ----------------------------
# 1) Ascend 根目录
# ----------------------------
os.environ["ASCEND_HOME"] = "/usr/local/Ascend"

# ----------------------------
# 2) TBE 算子实现路径加入 PYTHONPATH
# ----------------------------
tbe_impl = os.path.join(os.environ["ASCEND_HOME"],
    "ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe")
os.environ["PYTHONPATH"] = f"{tbe_impl}:{os.environ.get('PYTHONPATH','')}"

# ----------------------------
# 3) OPP 路径
# ----------------------------
opp_path = os.path.join(os.environ["ASCEND_HOME"], "ascend-toolkit/latest/opp")
os.environ["ASCEND_OPP_PATH"] = opp_path

# ----------------------------
# 4) 编译器路径加入 PATH
# ----------------------------
ccec = os.path.join(os.environ["ASCEND_HOME"],
    "ascend-toolkit/latest/compiler/ccec_compiler/bin")
os.environ["PATH"] = f"{ccec}:{os.environ.get('PATH','')}"

# ----------------------------
# 5) 动态库路径(驱动 + 运行库)
# ----------------------------
lib64_1 = os.path.join(os.environ["ASCEND_HOME"], "ascend-toolkit/latest/lib64")
lib64_2 = os.path.join(os.environ["ASCEND_HOME"], "driver/lib64")
tiling = os.path.join(os.environ["ASCEND_HOME"],
    "ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe/op_tiling")

# LD_LIBRARY_PATH 一定要在最前面覆盖
ld_paths = ":".join([lib64_1, lib64_2, tiling, os.environ.get("LD_LIBRARY_PATH","")])
os.environ["LD_LIBRARY_PATH"] = ld_paths

# Optional: 打印检查
print("ASCEND_HOME:", os.environ["ASCEND_HOME"])
print("PYTHONPATH:", os.environ["PYTHONPATH"].split(":")[:3])
print("ASCEND_OPP_PATH:", os.environ["ASCEND_OPP_PATH"])
print("PATH (head):", os.environ["PATH"].split(":")[:3])
print("LD_LIBRARY_PATH (head):", os.environ["LD_LIBRARY_PATH"].split(":")[:3])

原因

问题原因

当你在运行 MindSpore + Ascend NPU 时,MindSpore 会检查:

✔ TBE 算子实现路径是否在 PYTHONPATH ✔ CCEC 编译器是否在 PATH ✔ OPP 路径是否在 ASCEND_OPP_PATH ✔ 库文件是否在 LD_LIBRARY_PATH




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • 教师手机或平板控制电脑,当翻页笔用甚至写字
  • 昇腾MindSpore Transformer和MindNLP在华为ModelArts上的失败
  • 香橙派AI pro开箱使用图文展示教程
  • Ubuntu服务器网络设置
  • Latex natbib引用包的小坑