Closed
[Documentation|文档反馈]: aclnnBlockSparseAttentionGrad 参数表 mask 数据类型写 BOOL,但 def/UT/同文档示例均为 UINT8,按表格传 BOOL 必被拒 #5793
muzimu217Add on Oct 3Closed at 7 days ago
Oct 3 Associated pull request
游震
Oct 3 Comments:
Oct 3 Comments:
/assign @muzimu217


Oct 3 Assign muzimu217 as responsible person
周云飞
23 days ago Comments:
23 days ago Comments:
您好,感谢您详细整理参数表、示例和注册定义之间的差异。
您指出的文档一致性问题值得修正,但“传 BOOL 必被拒”的结论需要区分校验阶段:当前核对的实现中,两个 mask 参数在算子注册定义中确实都声明为 UINT8;不过,接口层的类型检查明确允许 blockSparseMaskOptional 使用 BOOL 或 UINT8。因此,接口层与注册定义的允许范围存在差异,不能直接认定 BOOL 会在接口层被拒绝;后续是否在推导或执行阶段失败,仍需验证。
另外,attenMaskOptional 不能仅按注册表的数据类型理解为可传入的张量。接口头文件注明该参数只支持 nullptr,调用示例也传入 nullptr。文档调整时应保留这一限制,避免将 BOOL 改为 UINT8 后,反而让使用者误以为可以传入 UINT8 张量。
针对您报告的三处表格差异,一个可行的处理方向是:将 blockSparseMaskOptional 的说明与注册定义中的 UINT8 对齐,同时明确 attenMaskOptional 当前仅支持 nullptr;主目录和 experimental 副本需分别核对适用范围。您提到的文档及 UT 片段尚未在本次证据中核实,请补充所依据的文档版本或链接,以便确认三处修改位置是否对应同一版本。目前没有运行验证结果,UINT8 也不能据此视为整个调用必然成功的保证。


muzimu217
18 days ago Comments:
18 days ago Comments:
感谢指正,几个点分别确认:
- 接口层与校验层的区分是我们此前理解有误,撤回"BOOL 必被拒"的结论。
- 文档修改方向同意:blockSparseMaskOptional 的取值与 UINT8 对齐;attenMaskOptional 保留"仅支持 nullptr"的说明。已在 !13324 中按此更新,三处表格差异对应的修改版本见:
- attention/block_sparse_attention_grad:https://gitcode.com/cann/ops-transformer/blob/9c3a97d39e3f87b2d33aa6d6f1ceb59a1de891be/attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.md
- experimental/attention/block_sparse_attention_grad:https://gitcode.com/cann/ops-transformer/blob/9c3a97d39e3f87b2d33aa6d6f1ceb59a1de891be/experimental/attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.md
- BOOL/UINT8 在实际运行中的行为差异,我们会在本机环境验证后在评论区补充结论。
如表格表述仍有与接口定义不一致处,请继续指出。


9 days ago Associated pull request
周云飞
7 days ago Comments:
7 days ago Comments:
pr已经合入,本issue关闭


7 days ago changed custom state from 进行中 to 已完成
7 days ago Close issue
[Bug-Report|文档反馈]: aclnnBlockSparseAttentionGrad 参数表 mask 数据类型写 BOOL,但 def/UT/同文档示例均为 UINT8
现象
attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.md:BOOL;CreateAclTensor(maskData, maskShape, &maskAddr, aclDataType::ACL_UINT8, &maskTensor); // 严格使用UINT8;op_host/block_sparse_attention_grad_def.cpp:两个 mask 参数均为.DataType({ge::DT_UINT8, ge::DT_UINT8});tests/ut/op_host/test_block_sparse_attention_grad_infershape.cppL48/L104:infershape 用例按ge::DT_UINT8构造 blockSparseMaskOptional;op_host/op_api/block_sparse_attention_grad.cpp仅在 attenMask 为 nullptr 时内部分配 DT_BOOL 占位张量,与用户入参 dtype 无关)。即:表格写 BOOL,代码三源(def/UT/示例)均为 UINT8。用户按表格声明传 ACL_BOOL mask,GetWorkspaceSize/INFER_SHAPE 阶段即报 dtype 不支持;按示例传 UINT8 则通过——同一文档自相矛盾。
复现方式
attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.mdL239/L249(BOOL)vs L681(严格使用UINT8);op_host/block_sparse_attention_grad_def.cpp两个 mask 参数的 DataType;aclnnBlockSparseAttentionGradGetWorkspaceSize,预期 dtype 校验失败;换 ACL_UINT8 通过。修复建议
表格 BOOL → UINT8,共 3 处:
attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.mdL239、L249;experimental/attention/block_sparse_attention_grad/docs/aclnnBlockSparseAttentionGrad.mdL222(同表同参数的镜像副本)。(若维护者意图是 BOOL 才对,则应改 def/UT/示例三处并放开 dtype——但现网三源一致指向 UINT8,且示例注释"严格使用UINT8"语气明确,文档收敛为大概率正确方向。)
说明