已关闭
[Documentation|文档反馈]: QUICKSTART.md 的 --soc 示例与默认值对 A3 设备错误,且缺少 SoC 版本探测说明 #4234
i_can_fly创建于  8月11日关闭于  8月26日
i_can_fly
8月11日 创建

Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.

Document Link(文档链接)

  • docs/QUICKSTART.md(第 55、60-62、143 行)
  • 关联文档:docs/zh/install/compile.md、docs/zh/install/quick_install.md、docs/zh/invocation/quick_op_invocation.md、docs/zh/develop/aicore_develop_guide.md

Issues Section(问题文档片段)

docs/QUICKSTART.md 第 52-62 行:
bash build.sh --pkg --soc=${soc_version} --ops=add_example -j16
docs/QUICKSTART.md 第 143 行("算子开发"章节):
bash build.sh --pkg --soc=ascend910b --ops=add_example -j16
docs/zh/invocation/quick_op_invocation.md 第 49、65 行:

${soc_version}(可选):表示NPU型号,默认"ascend910b"。当设置为"ascend950"时会运行"arch35"目录下的示例文件。
build.sh 第 562-564 行:
# No soc provided.
if [[ -z "$ASCEND_SOC_UNITS" ]]; then
    ASCEND_SOC_UNITS="ascend910b"
fi

Existing Issues(存在的问题)

问题:

  1. QUICKSTART 第一步即被阻塞:QUICKSTART.md "算子开发"章节(第 143 行)把 --soc=ascend910b 硬编码为示例命令,未提示用户根据实际硬件替换。在 Atlas A3(Ascend910_9362)环境上照搬该命令编译出的算子包,运行 example 时直接报 aclnnAddExampleGetWorkspaceSize failed. ERROR: 161001,用户在快速入门第一步就卡死。

  2. --soc 默认值 ascend910b 不做硬件校验:build.sh:564 在用户未传 --soc 时默认 ascend910b,且整个编译流程不会与运行态硬件做任何交叉校验。编译"成功"(生成 .run 包)但运行失败,错误信号被推迟到运行时才暴露,定位成本高。

  3. 缺少"如何判断我的设备是 A2 还是 A3"的指引:npu-smi info 输出只显示 Ascend910(Name 列),不直接区分 A2/A3;项目文档中没有任何一处说明如何从 npu-smi info 输出、/etc/ascend_install.info、cat /proc/deviec 或 npu-smi info -t board 推断 --soc 取值。docs/zh/install/quick_install.md 的"环境验证"章节只让用户跑 npu-smi info 确认驱动正常,未说明如何从中读出 SoC 型号。

  4. 多个文档以 ascend910b 为默认/示例,但都未给出探测方法:compile.md、aicore_develop_guide.md、quick_op_invocation.md 重复"Atlas A2 用 ascend910b(默认),A3 用 ascend910_93"这句话,但都假设用户已经知道自己设备的型号——对 CANNLab / Docker 默认环境的新手不成立。

问题复现指令:

环境:CANN 9.0.0 + Atlas A3(npu-smi info 显示 Ascend910,rtGetSocVersion 返回 Ascend910_9362)

  1. 按 QUICKSTART.md 照搬命令编译(--soc 留空走默认,或按"算子开发"章节硬编码 ascend910b)
source /home/developer/Ascend/cann/set_env.sh
cd /mnt/workspace/ops-transformer
bash build.sh --pkg --soc=ascend910b --ops=add_example -j16
  1. 安装(QUICKSTART 第 3 步)
    ./build_out/cann-ops-transformer-*linux*.run

  2. 配置环境变量(QUICKSTART 第 4 步)
    export LD_LIBRARY_PATH=${ASCEND_HOME_PATH}/opp/vendors/custom_transformer/op_api/lib:${LD_LIBRARY_PATH}

  3. 运行 example(QUICKSTART 第 5 步)—— 此处失败
    bash build.sh --run_example add_example eager cust --vendor_name=custom

    • 预期输出(实际):
      aclnnAddExampleGetWorkspaceSize failed. ERROR: 161001
  4. 定位真实原因(需开启 slog,用户难以自发发现)

export ASCEND_SLOG_PRINT_TO_STDOUT=1
bash build.sh --run_example add_example eager cust --vendor_name=custom 2>&1 | grep -iE "ERROR.*AddExample|161001|socVersion"
或查 plog:
`grep -iE "AddExample|161001" $HOME/ascend/log/debug/plog/plog-*.log`
真实错误:`Get regInfo failed, The binary_info_config.json of socVersion [ascend910_93] does not support opType [AddExample].`
  1. 对比验证:用正确 SoC 重编后即可通过
bash build.sh --pkg --soc=ascend910_93 --ops=add_example -j16
./build_out/cann-ops-transformer-*linux*.run
bash build.sh --run_example add_example eager cust --vendor_name=custom

预期输出(正确):
add_example first input[0] is: 1.000000, second input[0] is: 1.000000, result[0] is: 2.000000 ... Example completed successfully

likedislike
weihao18成员
8月11日 评论:

/assign @weihao18

likedislike
CANN-robotCANN-robot成员
8月11日 将 weihao18 设为负责人
Wweihao18成员
8月12日 关联了pull request:【文档】修复 QUICKSTART.md --soc 硬编码并补充 SoC 取值映射表跳转
weihao18成员
8月12日 评论:

你好,ascend910b硬编码问题已修改,相关文档引导跳转到SoC 取值映射表 [https://gitcode.com/cann/ops-transformer/blob/master/docs/QUICKSTART.md#soc-version-mapping]

目前确实没有很好的方法查询npu设备型号,后续npu-smi会新增命令,支持直接查询出soc version

likedislike
weihao18成员
8月26日 评论:

该问题即将关闭,后续有其它问题请提新issue

likedislike
Wweihao18成员
8月26日 issue状态由 进行中 改变为 已完成
Wweihao18成员
8月26日 关闭了 issue
CANN-robotCANN-robot成员
8月26日 添加了label:resolved