# 1. 加载 CANN 环境
source /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

# /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash -> ../../set_env.sh*

# /home/developer/Ascend/cann-8.5.2/set_env.sh
# /home/developer/Ascend/nnal/asdsip/set_env.sh
# /home/developer/Ascend/nnal/atb/set_env.sh
# /home/developer/Ascend/ascend-toolkit/set_env.sh

到底 启用哪个呢

cann 环境变量 各脚本用途区分 + 优先级选用方案

一、每个文件定位

1. /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

标准主推入口,算子开发/TBE/DSL/ATC编译首选

  • latest 是软链接,指向当前默认安装的CANN版本(你这里实际链接到 cann-8.5.2
  • 会自动配置:ASCEND_TOOLKIT_PATH、编译器、头文件、库路径、atc、ascend-clang、simulator仿真环境、python环境
  • 官方文档、CANN算子竞赛、本地TBE算子开发统一推荐用这个
source /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

2. /home/developer/Ascend/cann-8.5.2/set_env.sh

固定版本原始环境脚本

  • 等价于上面 latest 软链接指向的底层文件,功能完全一致
  • 适合多CANN版本共存、需要锁定8.5.2不随latest切换时使用

3. /home/developer/Ascend/ascend-toolkit/set_env.sh

老版本遗留顶层脚本,不推荐优先使用
很多新版安装包已经弱化该入口,变量完整性不如 bin/setenv.bash

4. nnal/asdsip/set_env.sh / nnal/atb/set_env.sh

上层业务推理框架配套环境,算子开发不用

  • ATB:Ascend Tensor Block,高层推理加速库
  • ASDSIP:芯片仿真上层业务接口
    只做模型推理、ATB算子调用时才需要额外source;纯TBE/DSL算子开发完全不需要加载这两个,加载反而污染环境。

二、分场景选用建议

场景1:纯TBE/DSL算子开发、CANN算子竞赛、atc模型编译、单算子仿真

首选

source /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

场景2:机器装了多个CANN版本,固定锁定8.5.2版本,不想被latest切换影响

source /home/developer/Ascend/cann-8.5.2/set_env.sh

场景3:做ATB高层算子、ASDSIP芯片仿真业务流程(极少算子开发场景)

先加载基础CANN,再追加业务库:

source /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash
source /home/developer/Ascend/nnal/atb/set_env.sh
# 如需asdsip再追加
source /home/developer/Ascend/nnal/asdsip/set_env.sh

场景4:禁止使用

不要直接 source /home/developer/Ascend/ascend-toolkit/set_env.sh,环境变量不全,容易出现头文件/链接库找不到报错。

三、验证环境是否加载成功

source后执行校验命令,正常输出版本号即生效:

ascend-clang --version
atc --version
echo $ASCEND_TOOLKIT_PATH

问题根源

执行 source 后环境变量 ASCEND_TOOLKIT_PATH 为空、ascend-clang 找不到、atc --version 报错,说明 setenv.bash 加载失败,有几种常见原因和修复方案。

1. 先确认软链接是否正常

先检查 latest 指向是否存在:

ls -l /home/developer/Ascend/ascend-toolkit/latest
ls /home/developer/Ascend/cann-8.5.2/

正常输出应看到软链接指向 cann-8.5.2,目录内存在 bin/setenv.bash。

2. 改用固定版本脚本加载(绕过latest软链接问题)

优先直接加载 8.5.2 原始 env,不要再用 latest:

source /home/developer/Ascend/cann-8.5.2/set_env.sh

加载完立刻校验:

echo $ASCEND_TOOLKIT_PATH
which ascend-clang
which atc
  • 如果打印出路径,说明环境正常;
  • 如果依旧为空,说明脚本本身损坏/权限不足。

3. 权限问题修复(脚本无执行/读取权限)

chmod +x /home/developer/Ascend/cann-8.5.2/set_env.sh
chmod +x /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

再重新 source。

4. 关于 atc 报错补充说明

CANN 8.5.2 的 atc 不支持 --version 参数,正确查看版本命令:

atc -h
# 或者查看toolkit版本文件
cat $ASCEND_TOOLKIT_PATH/version.info

5. 如果两种脚本加载后变量依旧为空

情况A:安装包缺失文件

进入目录确认脚本真实存在:

ls /home/developer/Ascend/cann-8.5.2/set_env.sh
ls /home/developer/Ascend/ascend-toolkit/latest/bin/setenv.bash

提示 No such file 代表安装残缺,需要重装 CANN 8.5.2。

情况B:shell 兼容性问题

你用 bash,脚本是 bash 脚本,不要用 sh 执行:

# 正确
source xxx/set_env.sh
# 错误(不要用)
sh xxx/set_env.sh

标准完整校验流程(复制执行)

# 加载固定版本
source /home/developer/Ascend/cann-8.5.2/set_env.sh
# 打印根路径
echo "ASCEND_TOOLKIT_PATH = $ASCEND_TOOLKIT_PATH"
# 查看编译器
which ascend-clang
# 查看ATC工具
which atc
# 查看版本文件
cat $ASCEND_TOOLKIT_PATH/version.info

补充:什么时候才加载 nnal/atb/asdsip

算子开发、TBE/DSL、单算子编译仿真完全不需要加载下面两个,反而会覆盖基础环境变量,先解决上面基础CANN环境问题即可:

# 纯算子开发不要执行这两行
# source /home/developer/Ascend/nnal/atb/set_env.sh
# source /home/developer/Ascend/nnal/asdsip/set_env.sh
Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐