Closed
[Documentation|文档反馈]: aclnnVarMean 参数表两处自相矛盾:self 维度列 1-8 与同文三处 0 维声明互斥、出参行序与原型相反(中英两份同错) #4182
liuhanwen8Add on 11 days agoClosed at 8 days ago
11 days ago Added label: documentation
陈思
10 days ago Comments:
10 days ago Comments:
您好,感谢反馈!已核对固定提交 8c1f633e3679 的中文资料、英文资料及接口实现,两份参数表均存在您指出的文字不一致:self 使用说明写 0 到 8 维,而维度列写 1–8;参数表也都把 meanOut 放在 varOut 前面,与同页原型的顺序不同。
实现的 shape 检查限制的是最大维数,并未在该检查中将 0 维一概排除。一个可行的资料修订方向是核对标量调用的完整约束后统一维度描述,并将两个输出行按原型排列,保持中英文同步。参数说明表的展示顺序本身不会改变 C 接口的参数绑定;调用时仍需严格按原型先传 varOut、再传 meanOut,否则这两个通常类型相同的指针可能在调用侧被误置换。
该项属于资料一致性和易读性完善,不需要通过交换实现的参数顺序来匹配现有表格;标量支持及各平台类型范围也应分别核对。我们会继续跟踪这两处说明差异。


10 days ago Assign chensi79 as responsible person
10 days ago Added label: pending-confirmation
10 days ago Removed responsible person chensi79
10 days ago Assign chen_0715 as responsible person
10 days ago Assign sakuraqqz as responsible person
10 days ago Removed responsible person chen_0715
[Documentation|文档反馈]: aclnnVarMean 参数表两处自相矛盾:self 维度列 1-8 与同文三处 0 维声明互斥、出参行序与原型相反(中英两份同错)
现象
math/reduce_var/docs/aclnnVarMean.md与英文版aclnnVarMean_en.md的参数表有两处自相矛盾:self行的「维度」列写1-8,但同一份文档另有三处指向「0 维允许」:同行「使用说明」写「shape支持0到8维」、错误码表 161002 子项只写「self的shape超过8维」才拒、同表出参
meanOut/varOut两列都写0-8。一处写 1、三处写 0,同一份文档对 rank=0 判定相反。meanOut行排在varOut行之前,原型却是varOut第 5、meanOut第 6,行序与原型相反。两处都是文档内部的不一致(问题 1 同行两列互斥、问题 2 表格与同页原型互斥),不需上板即可判定;纯文本断言可复现,4 处命中、
rc=1。文档链接
问题片段
问题 1,中文 L89-95(逐字,英文 L93-97 同构):
同文错误码表 L203(逐字):
问题 2,中文 L43-51 原型(逐字节选):
aclTensor* varOut, // 第 5 个形参 aclTensor* meanOut, // 第 6 个形参参数表里
meanOut在中文 L129、varOut在 L139;英文 L131/L141。期望
问题 1 的应得值来自文档内部三处对照(不依赖任何实测):同一张表里
self的「使用说明」写「0 到 8 维」、meanOut维度列写0-8、varOut维度列写0-8,三处下界都是 0,只有
self的维度列写1-8。少数服从多数,该格应为0-8。self维度格由1-8改为0-8。varOut在前、meanOut在后,与原型一致。环境
cann/ops-mathmaster,31d2963a888de951217b5299ad30eb49551d70df(git fetch后核对)影响
1-8会认为 0 维标量不支持,业务里多写一层torch.atleast_1d,与实际支持面对不上,下游支持性判断会失真。meanOut、均值写进varOut,后续读取全部错位且无提示。静默错误比报错更难查。复现步骤
check_varmean_doc.py。python3 check_varmean_doc.py --repo-root=.(纯本地读,不联网)。[DEFECT],退出码 1。复现脚本
判据:
rc=1且 stdout 含[DEFECT]。import os, re, sys ROOT = next((a.split("=", 1)[1] for a in sys.argv if a.startswith("--repo-root=")), ".") BASE = os.path.join(ROOT, "math", "reduce_var", "docs") USAGE = re.compile(r"(?:shape\s*支持\s*|supports?\s+)(\d+)\s*(?:到|to)\s*(\d+)\s*(?:维|dimension)", re.I) COL = re.compile(r"^\s*(\d+)\s*-\s*(\d+)\s*$") bad = 0 for n in ("aclnnVarMean.md", "aclnnVarMean_en.md"): L = open(os.path.join(BASE, n), encoding="utf-8").read().splitlines() i = next((k for k, l in enumerate(L) if "self(aclTensor*)" in l or ">self<" in l), None) if i is not None: lo = col = None for l in L[i:i + 14]: m, c = USAGE.search(l), COL.match(re.sub(r"<[^>]+>", "", l)) lo = lo if lo is not None else (int(m.group(1)) if m else None) col = col if col is not None else (int(c.group(1)) if c else None) if lo is not None and col is not None and lo != col: print("[DEFECT] %s: self 维度列下界 %d 与使用说明下界 %d 互斥(L%d)" % (n, col, lo, i + 1)); bad += 1 mi = next((k for k, l in enumerate(L) if re.search(r"<td>\s*meanOut\s*[((]", l)), None) vi = next((k for k, l in enumerate(L) if re.search(r"<td>\s*varOut\s*[((]", l)), None) m = re.search(r"aclnnVarMeanGetWorkspaceSize\((.*?)\)", "\n".join(L), re.S) if m and mi is not None and vi is not None: ns = [p.split()[-1].lstrip("*") for p in m.group(1).split(",") if p.split()] if (mi < vi) != (ns.index("varOut") > ns.index("meanOut")): print("[DEFECT] %s: 表序 meanOut@L%d/varOut@L%d 与原型相反" % (n, mi + 1, vi + 1)); bad += 1 print("[RESULT] 命中 %d 处" % bad) sys.exit(1 if bad else 0)实测输出:
rc=1。建议
两处均为文档内部一致性错误,只改文档即可。同类先例 #4019(
aclnnLog2参数表「维度 1-8」与错误码表只拒「>8」互斥、rank=0 实际被接受),本 issue 是同一判据在
aclnnVarMean上的复现。同接口的 dtype 问题是 #4172(bf16 全量 161002),属实现缺陷,与本 issue 无关。