已关闭
[Documentation|文档反馈]: #1578
邵创建于 5月17日关闭于 6月24日
5月18日 将 chensi79 设为负责人
5月18日 关联了pull request:docs(faq): 新增FAQ文档并更新README链接
陈思
5月18日 评论:
5月18日 评论:
你好,感谢反馈。对于您提出的问题,
1. 产品名与 ${soc_version} 对应关系:
| 产品名 | ${soc_version} 取值 |
|---|---|
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | ascend910b |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | ascend910_93 |
| 950 系列产品 | ascend950 |
2. experimental/ 目录与顶层 math/、conversion/、random/ 目录的区别是什么?我的算子应放在哪里?
| 目录 | 用途 | 交付件要求 |
|---|---|---|
experimental/${op_class}/ |
存放社区贡献的生态算子(用户自定义算子) | 较轻量:Kernel 实现 + 测试文件 + README 即可 |
${op_class}/(如 math/、conversion/、random/) |
存放项目标准算子 | 更完整:需包含 op_host(Tiling)、op_kernel、UT 测试等 |
如何选择:
- 新贡献算子:提交 PR 时,SIG 成员会根据评审结果分配路径,通常先进入
experimental/${op_class}/。请在 Issue 中说明算子设计方案,由 Committer 指定分类。 - 晋升为标准算子:当生态算子经过充分验证后,可由 Maintainer 讨论迁移至顶层目录,交付件需补充 op_host Tiling 实现等。
参考:贡献指南"贡献新算子"章节。
3. build.sh 是否支持 Windows 或非 bash 环境?
当前 build.sh 为 bash 脚本,仅支持 Linux 环境。
- Windows 用户:推荐使用 WSL2(Windows Subsystem for Linux)或 Docker 容器,在其中安装 CANN 工具链后执行
bash build.sh。 - 其他非 bash shell(如 zsh、fish):请使用
bash build.sh ...显式调用。
参考:build 参数说明了解完整的编译参数列表。
4. 算子目录下缺少 op_api/ 或 op_kernel/ 目录,如何调用?
部分算子的交付件因实现方式不同而有所差异,以下是各目录缺失的含义和排查方法:
| 缺失目录 | 含义 | 排查建议 |
|---|---|---|
op_api/ |
该算子暂不支持 aclnn 调用 | 可通过图模式(op_graph)调用,或查看该算子 README 了解支持的调用方式 |
op_kernel/ |
可能调用了其他算子的 Kernel 实现 | 查看该算子 op_api/ 或 op_graph/ 目录下的源码,定位实际承载 Kernel 的算子 |
op_host/ |
可能调用了其他算子的 Host 实现 | 同上,查看 op_api/ 或 op_graph/ 下的源码实现 |
op_graph/ |
该算子暂不支持图模式调用 | 可通过 aclnn(op_api)方式调用 |
排查路径:
- 先查看目标算子的
README.md,了解该算子支持的调用方式。 - 若缺少某个子目录,查看
op_api/或op_graph/中的源码,搜索实际引用的算子名称。 - 若该算子 Kernel 暂无 Ascend C 实现,欢迎参考贡献指南补充贡献。
示例:npu_format_cast 算子缺少 op_kernel/ 目录
conversion/npu_format_cast/ 目录下没有 op_kernel/,但其 op_host/op_api/aclnn_npu_format_cast.cpp 中调用了其他算子的 Kernel 实现:
// 通过 l0op::TransData 调用 trans_data 算子的 Kernel
auto outTensor = const_cast<aclTensor*>(
l0op::TransData(formatTensor, dstTensor->GetStorageFormat(), 1, uniqueExecutor.get()));
// 通过 l0op::ViewCopy 调用 view_copy 算子的 Kernel
auto viewCopyResult = l0op::ViewCopy(outTensor, dstTensor, uniqueExecutor.get());
因此,npu_format_cast 的实际计算由 conversion/trans_data/ 和 conversion/view_copy/ 两个算子的 op_kernel/ 承载。遇到类似情况时,顺着 op_api/ 源码中的 l0op:: 调用链即可定位到实际的 Kernel 实现算子。
大部分问题在当前的math仓中都能找到答案,聚合的 FAQ页面正在持续建设中,请耐心等待。


6月24日 issue状态由 进行中 改变为 已完成
6月24日 关闭了 issue
6月24日 移除了负责人 chensi79
6月24日 将 chensi79 设为负责人
6月24日 添加了label:Accepted
Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
一、文档链接 (必填)
https://gitcode.com/cann/ops-math/blob/master/docs/README.md
二、问题文档片段 (必填)
▎ - 样例类文档:可参考cann-samples (https://gitcode.com/cann/cann-samples)仓算子样例。
▎ - 实践类文档:建设中,请您访问项目wiki进行搜索。
▎ - FAQ类文档:建设中,请您访问项目wiki进行搜索。
💡 存在的问题(选填)
背景
docs/README.md 的"更多文档"小节中,"FAQ类文档"长期标注为"建设中,请您访问项目wiki进行搜索"。但 wiki 当前尚无聚合的 FAQ
页面,新手遇到问题往往需要翻阅 issue 历史或多份指南文档跳转拼接,体验较差。
考虑到 ops-math 是 CANN 算子库的入口级仓库之一,新接触 CANN/NPU 的开发者占比较高,建议优先建设一份面向"踩坑高频点"的
FAQ 文档,路径建议:docs/zh/FAQ.md,并在 docs/README.md 的"更多文档"小节替换原占位说明。
建议初版收录的问题(均为现有文档中分散或缺失的内容)
QUICKSTART.md 中要求用户先到 CANN 下载中心复制硬件查询命令、执行后回填产品名才能映射到 soc_version。建议 FAQ
中提供"硬件命令 → 产品名 → soc_version"的速查表,并附常见误填案例(如 910B 误填为 910_93)。
CONTRIBUTING.md 提到 SIG 会"分配合适的算子分类路径(如 experimental/math)",但未明确两者的稳定性边界、API
兼容性承诺、晋升到顶层目录的条件。这是贡献者首要疑问。
当前 build.sh 为 bash 脚本,Windows 开发者在何种环境下可编译(WSL?Docker?)官方建议是什么,文档中没有集中说明。
docs/zh/install/dir_structure.md 中提到"若缺少 op_api 目录,说明该算子暂不支持 aclnn 调用""若缺少 op_kernel
目录,可能调用了其他算子的 op_kernel 实现",但没有给出排查路径。建议 FAQ 给出"如何顺着 op_api/op_graph 找到实际承载
Kernel 的算子"的具体步骤。
价值
中已隐含但未被显式串起来的信息,整理成可被搜索引擎检索的单页文档。