您好,感谢反馈!
问题分析
本次核查的 cann/ops-math@a11d8785 参数表中,tensors 和 out 的“数据类型”列已经列出 FLOAT、FLOAT16、BFLOAT16;A2 入口也按这三种类型校验,列表内类型必须一致,FLOAT 输入要求 FLOAT 输出。因此 INT8 输入返回参数错误符合这版实现,不能据此判断该版本缺少类型列表。资料输入列、资料输出列、类型检查。本条未给资料提交,所见页面与该版本是否存在差异尚未确认。
输出形状的说明确实可以更明确:当前 dim 仅支持 0,实现会把各输入的后续维度合并。对参与拼接的非空输入,令 L_t=shape_t[0]、R_t=后续维度大小的乘积,则输出为 [numChunks, Σ ceil(L_t/numChunks)×R_t]。所以两个 [4,3,2] 输入、numChunks=2 时,输出是 [2,24],与保留三维的 [2,6,2] 不同。合维处理、形状推导。
首维不能整除 numChunks 时,形状推导使用向上取整,没有把不能整除作为报错条件。所读 A2 路径先清零缓冲区,再复制有效数据,末块只复制剩余部分,体现了缺位填零的处理。清零、末块复制。
处理方向
一个可行的资料调整方向是保留已有类型支持列表,补充“合并尾部维度—按向上取整分块—拼接同号块”的顺序、二维输出公式,以及整除和不能整除的形状/填充示例。不能整除应说明现有行为,不宜直接新增为 161002 条件;真正不满足类型、维数、dim、numChunks 或输出形状约束的情况则分别说明。我们会继续确认这些说明与各产品实现的对应范围。


您好,感谢您的关注和反馈。
该issue内提及的问题已确认,将会尽快合入代码。
修复PR链接:https://gitcode.com/cann/ops-math/pull/6736


aclnnChunkCat 资料缺少 dtype 支持面,且「按 dim 后一维级联」的表述与实现输出形状不一致
1. 环境
Ascend 910B2(A2)单卡;CANN 9.2.0;npu-smi 26.1.1;aclnn 单算子直调。
2. 问题
资料
conversion/chunk_cat/docs/aclnnChunkCat.md的参数表里:而实现侧(
op_api/aclnn_chunk_cat.cpp)的白名单只有 FLOAT / FLOAT16 / BFloat16 三种;INT8、INT32、UINT8 等一律返回 161002。按资料无法判断「INT8 到底支不支持」,
只能靠试。
同时功能说明写「将 tensors 中所有 tensor 先按照维度 dim 切分为 numChunks 块,
再按照 dim 后一维进行级联」,但实现(
op_host/chunk_cat_infershape.cpp)推导的输出是即「每块其余各维被压平成一列,各 tensor 的同号块首尾相接」,不是「按 dim+1 维度级联」
(后者会得到 dim+1 维输出)。按资料的字面意思写调用(例如 2 个 4x3x2 的 tensor、
numChunks=2、out 声明成 2x6x2)必然 161002。
3. 复现
# 用 2x6x2 的 out(资料字面语义)→ 161002 # 用 2x24 的 out(实现语义)→ 0等价地,任意一个 INT8 输入 + fp32 out 的调用都会返回 161002,而资料没有说明 INT8 不支持。
4. 期望
tensors/out的数据类型支持列表(与源码白名单一致:FLOAT / FLOAT16 / BFLOAT16);或至少给出一个「输入→输出形状」的示例;
(实测首维不能被 numChunks 整除时不报错,按 ceil 补齐后继续算,需明确是否符合预期)。
5. 实际
资料三处均缺失/与实现不一致,调用方只能靠试错确定合法形状与 dtype。