已开启
fix: remove unused vector system workspace #6242
fix: remove unused vector system workspace #6242
已开启
zhang-song-rui创建于 22 天前
zhang-song-rui
zhang-song-rui成员
22 天前

描述

减少 Math Vector 路径未使用的 workspace 申请,保留计算逻辑和内部 kernel 接口。

整改策略:原来额外申请了 userworkspace 的分支,保留系统预留和用户空间;没有额外 userworkspace 且不依赖 KFC 的分支,将系统空间申请量清零,并在 kernel 入口适配零 workspace。保留内部 kernel 参数和调用形式;无需用户空间的路径不调用 GetUserWorkspace,需要用户空间的路径保留正确的地址转换。

  • Lerp、TanhGrad、Select SIMT 保留原 WORKSPACE_SIZE 常量和赋值方式,仅将常量值由 32 改为 0。
  • Muls、Pow 的无用户空间路径将 workspace 申请量设为 0;Pow 入口移除阻止零 workspace 执行的判空返回及无用的系统空间设置、用户空间转换。
  • 保留 Lerp、Pow、TanhGrad 内部 Init 的 workspace 参数和原有调用方式,不替换为显式 nullptr。
  • 公共 Broadcast 路径由 opbase PR 1007 统一处理,配套更新各算子 Host UT 的 workspace 期望值。

验证

2026-10-17 Host 构建及 UT:334/334 通过,使用固定 opbase 依赖叠加 PR 1007 的 Broadcast 补丁联调;不代表未包含补丁的默认远程依赖已通过。完成入口调用参数及源码差异检查。本次入口调整未重新进行设备验证,下方设备数据仅为历史版本结果。

依赖及构建

生产 CMake 无改动。opbase PR 1007 合入后,再将远程依赖固定到包含补丁的上游 commit。测试 CMake 仅补充注册入口测试所需的 SDK pkg_inc 头文件搜索路径。

关联

未关联独立 Issue。依赖 opbase PR 1007;相关 NN PR 11789、Transformer PR 13661。

历史版本验证记录(不作为当前提交的设备验证结论)

分类验证结果(2026-10-13)

验证环境:Ascend950PR_9579,CANN 9.2.0(20260909)。这里的“二进制一致”指相同输入下输出张量的原始字节一致,不是编译产物文件一致。基线输入固定回放,独立检查输出元数据和原始字节。

范围限制:全量结果来自变基前联调版本(原依赖对照、opbase 6dc960b 加公共补丁);不能替代 opbase PR 1007 合入、更新远程固定 commit 后的默认构建复测。当前该依赖接入仍待完成。

【输出】二进制一致

固定输入 kernel 回放:430/430 项输出逐字节一致。新增大规模候选:78/78 项直接与最初基线输出一致,实际基线 ≥20 μs 的用例 74 项。

固定输入逐用例结果(展开)
用例 输出原始字节 修改后 workspace(B)
add_00_tail 一致 (0,)
add_00_aligned 一致 (0,)
add_00_broadcast 一致 (0,)
add_01_tail 一致 (0,)
add_02_tail 一致 (0,)
add_02_aligned 一致 (0,)
add_02_broadcast 一致 (0,)
add_03_tail 一致 (0,)
add_04_tail 一致 (0,)
add_05_tail 一致 (0,)
add_06_tail 一致 (0,)
add_07_tail 一致 (0,)
add_08_tail 一致 (0,)
add_09_tail 一致 (0,)
add_10_tail 一致 (0,)
add_11_tail 一致 (0,)
add_12_tail 一致 (0,)
add_13_tail 一致 (0,)
addcdiv_00_tail 一致 (0,)
addcdiv_00_aligned 一致 (0,)
addcdiv_00_broadcast 一致 (0,)
addcdiv_01_tail 一致 (0,)
addcdiv_02_tail 一致 (0,)
addcdiv_02_aligned 一致 (0,)
addcdiv_02_broadcast 一致 (0,)
addcdiv_03_tail 一致 (0,)
addcdiv_04_tail 一致 (0,)
addcmul_00_tail 一致 (0,)
addcmul_00_aligned 一致 (0,)
addcmul_00_broadcast 一致 (0,)
addcmul_01_tail 一致 (0,)
addcmul_02_tail 一致 (0,)
addcmul_02_aligned 一致 (0,)
addcmul_02_broadcast 一致 (0,)
addcmul_03_tail 一致 (0,)
addcmul_04_tail 一致 (0,)
addcmul_05_tail 一致 (0,)
axpy_00_tail 一致 (0,)
axpy_00_aligned 一致 (0,)
axpy_00_broadcast 一致 (0,)
axpy_01_tail 一致 (0,)
axpy_02_tail 一致 (0,)
axpy_02_aligned 一致 (0,)
axpy_02_broadcast 一致 (0,)
axpy_03_tail 一致 (0,)
axpy_v2_00_tail 一致 (0,)
axpy_v2_00_aligned 一致 (0,)
axpy_v2_00_broadcast 一致 (0,)
axpy_v2_01_tail 一致 (0,)
axpy_v2_02_tail 一致 (0,)
axpy_v2_02_aligned 一致 (0,)
axpy_v2_02_broadcast 一致 (0,)
axpy_v2_03_tail 一致 (0,)
axpy_v2_04_tail 一致 (0,)
axpy_v2_05_tail 一致 (0,)
axpy_v2_06_tail 一致 (0,)
axpy_v2_07_tail 一致 (0,)
bias_add_00_tail 一致 (0,)
bias_add_00_aligned 一致 (0,)
bias_add_00_broadcast 一致 (0,)
bias_add_01_tail 一致 (0,)
bias_add_02_tail 一致 (0,)
bias_add_02_aligned 一致 (0,)
bias_add_02_broadcast 一致 (0,)
bias_add_03_tail 一致 (0,)
bias_add_04_tail 一致 (0,)
bitwise_and_00_tail 一致 (0,)
bitwise_and_00_aligned 一致 (0,)
bitwise_and_00_broadcast 一致 (0,)
bitwise_and_01_tail 一致 (0,)
bitwise_and_02_tail 一致 (0,)
bitwise_and_03_tail 一致 (0,)
bitwise_and_04_tail 一致 (0,)
bitwise_and_05_tail 一致 (0,)
bitwise_and_06_tail 一致 (0,)
bitwise_and_07_tail 一致 (0,)
bitwise_or_00_tail 一致 (0,)
bitwise_or_00_aligned 一致 (0,)
bitwise_or_00_broadcast 一致 (0,)
bitwise_or_01_tail 一致 (0,)
bitwise_or_02_tail 一致 (0,)
bitwise_or_03_tail 一致 (0,)
bitwise_or_04_tail 一致 (0,)
bitwise_or_05_tail 一致 (0,)
bitwise_or_06_tail 一致 (0,)
bitwise_or_07_tail 一致 (0,)
bitwise_xor_00_tail 一致 (0,)
bitwise_xor_00_aligned 一致 (0,)
bitwise_xor_00_broadcast 一致 (0,)
bitwise_xor_01_tail 一致 (0,)
bitwise_xor_02_tail 一致 (0,)
bitwise_xor_03_tail 一致 (0,)
bitwise_xor_04_tail 一致 (0,)
bitwise_xor_05_tail 一致 (0,)
bitwise_xor_06_tail 一致 (0,)
bitwise_xor_07_tail 一致 (0,)
clip_by_value_00_tail 一致 (0,)
clip_by_value_00_aligned 一致 (0,)
clip_by_value_00_broadcast 一致 (0,)
clip_by_value_01_tail 一致 (0,)
clip_by_value_02_tail 一致 (0,)
clip_by_value_02_aligned 一致 (0,)
clip_by_value_02_broadcast 一致 (0,)
clip_by_value_03_tail 一致 (0,)
clip_by_value_04_tail 一致 (0,)
clip_by_value_v2_00_tail 一致 (0,)
clip_by_value_v2_00_aligned 一致 (0,)
clip_by_value_v2_00_broadcast 一致 (0,)
clip_by_value_v2_01_tail 一致 (0,)
clip_by_value_v2_02_tail 一致 (0,)
clip_by_value_v2_02_aligned 一致 (0,)
clip_by_value_v2_02_broadcast 一致 (0,)
clip_by_value_v2_03_tail 一致 (0,)
clip_by_value_v2_04_tail 一致 (0,)
div_00_tail 一致 (0,)
div_00_aligned 一致 (0,)
div_00_broadcast 一致 (0,)
div_01_tail 一致 (0,)
div_02_tail 一致 (0,)
div_02_aligned 一致 (0,)
div_02_broadcast 一致 (0,)
div_03_tail 一致 (0,)
div_04_tail 一致 (0,)
div_05_tail 一致 (0,)
div_06_tail 一致 (0,)
div_07_tail 一致 (0,)
div_no_nan_00_tail 一致 (0,)
div_no_nan_00_aligned 一致 (0,)
div_no_nan_00_broadcast 一致 (0,)
div_no_nan_01_tail 一致 (0,)
div_no_nan_02_tail 一致 (0,)
div_no_nan_02_aligned 一致 (0,)
div_no_nan_02_broadcast 一致 (0,)
div_no_nan_03_tail 一致 (0,)
div_no_nan_04_tail 一致 (0,)
div_no_nan_05_tail 一致 (0,)
equal_00_tail 一致 (0,)
equal_00_aligned 一致 (0,)
equal_00_broadcast 一致 (0,)
equal_01_tail 一致 (0,)
equal_02_tail 一致 (0,)
equal_02_aligned 一致 (0,)
equal_02_broadcast 一致 (0,)
equal_03_tail 一致 (0,)
equal_04_tail 一致 (0,)
equal_05_tail 一致 (0,)
equal_06_tail 一致 (0,)
equal_07_tail 一致 (0,)
equal_08_tail 一致 (0,)
equal_09_tail 一致 (0,)
floor_div_00_tail 一致 (0,)
floor_div_00_aligned 一致 (0,)
floor_div_00_broadcast 一致 (0,)
floor_div_01_tail 一致 (0,)
floor_div_02_tail 一致 (0,)
floor_div_02_aligned 一致 (0,)
floor_div_02_broadcast 一致 (0,)
floor_div_03_tail 一致 (0,)
floor_div_04_tail 一致 (0,)
floor_div_05_tail 一致 (0,)
floor_div_06_tail 一致 (0,)
floor_mod_00_tail 一致 (0,)
floor_mod_00_aligned 一致 (0,)
floor_mod_00_broadcast 一致 (0,)
floor_mod_01_tail 一致 (0,)
floor_mod_02_tail 一致 (0,)
floor_mod_02_aligned 一致 (0,)
floor_mod_02_broadcast 一致 (0,)
floor_mod_03_tail 一致 (0,)
floor_mod_04_tail 一致 (0,)
gcd_00_tail 一致 (0,)
gcd_00_aligned 一致 (0,)
gcd_00_broadcast 一致 (0,)
gcd_01_tail 一致 (0,)
gcd_02_tail 一致 (0,)
gcd_03_tail 一致 (0,)
gcd_04_tail 一致 (0,)
ger_00_tail 一致 (0,)
ger_00_aligned 一致 (0,)
ger_00_broadcast 一致 (0,)
ger_01_tail 一致 (0,)
ger_02_tail 一致 (0,)
ger_02_aligned 一致 (0,)
ger_02_broadcast 一致 (0,)
greater_00_tail 一致 (0,)
greater_00_aligned 一致 (0,)
greater_00_broadcast 一致 (0,)
greater_01_tail 一致 (0,)
greater_02_tail 一致 (0,)
greater_02_aligned 一致 (0,)
greater_02_broadcast 一致 (0,)
greater_03_tail 一致 (0,)
greater_04_tail 一致 (0,)
greater_05_tail 一致 (0,)
greater_06_tail 一致 (0,)
greater_07_tail 一致 (0,)
greater_08_tail 一致 (0,)
greater_equal_00_tail 一致 (0,)
greater_equal_00_aligned 一致 (0,)
greater_equal_00_broadcast 一致 (0,)
greater_equal_01_tail 一致 (0,)
greater_equal_02_tail 一致 (0,)
greater_equal_02_aligned 一致 (0,)
greater_equal_02_broadcast 一致 (0,)
greater_equal_03_tail 一致 (0,)
greater_equal_04_tail 一致 (0,)
greater_equal_05_tail 一致 (0,)
greater_equal_06_tail 一致 (0,)
greater_equal_07_tail 一致 (0,)
greater_equal_08_tail 一致 (0,)
lerp_00_tail 一致 (0,)
lerp_00_aligned 一致 (0,)
lerp_00_broadcast 一致 (0,)
lerp_01_tail 一致 (0,)
lerp_01_aligned 一致 (0,)
lerp_01_broadcast 一致 (0,)
lerp_02_tail 一致 (0,)
lerp_03_tail 一致 (0,)
lerp_04_tail 一致 (0,)
less_00_tail 一致 (0,)
less_00_aligned 一致 (0,)
less_00_broadcast 一致 (0,)
less_01_tail 一致 (0,)
less_02_tail 一致 (0,)
less_02_aligned 一致 (0,)
less_02_broadcast 一致 (0,)
less_03_tail 一致 (0,)
less_04_tail 一致 (0,)
less_05_tail 一致 (0,)
less_06_tail 一致 (0,)
less_07_tail 一致 (0,)
less_08_tail 一致 (0,)
less_09_tail 一致 (0,)
less_equal_00_tail 一致 (0,)
less_equal_00_aligned 一致 (0,)
less_equal_00_broadcast 一致 (0,)
less_equal_01_tail 一致 (0,)
less_equal_02_tail 一致 (0,)
less_equal_02_aligned 一致 (0,)
less_equal_02_broadcast 一致 (0,)
less_equal_03_tail 一致 (0,)
less_equal_04_tail 一致 (0,)
less_equal_05_tail 一致 (0,)
less_equal_06_tail 一致 (0,)
less_equal_07_tail 一致 (0,)
less_equal_08_tail 一致 (0,)
logical_and_00_tail 一致 (0,)
logical_and_00_aligned 一致 (0,)
logical_and_00_broadcast 一致 (0,)
logical_or_00_tail 一致 (0,)
logical_or_00_aligned 一致 (0,)
logical_or_00_broadcast 一致 (0,)
logical_or_01_tail 一致 (0,)
logical_or_02_tail 一致 (0,)
logical_or_03_tail 一致 (0,)
logical_or_04_tail 一致 (0,)
logical_or_05_tail 一致 (0,)
logical_or_06_tail 一致 (0,)
logical_or_07_tail 一致 (0,)
logical_or_08_tail 一致 (0,)
logical_or_08_aligned 一致 (0,)
logical_or_08_broadcast 一致 (0,)
maximum_00_tail 一致 (0,)
maximum_00_aligned 一致 (0,)
maximum_00_broadcast 一致 (0,)
maximum_01_tail 一致 (0,)
maximum_02_tail 一致 (0,)
maximum_02_aligned 一致 (0,)
maximum_02_broadcast 一致 (0,)
maximum_03_tail 一致 (0,)
maximum_04_tail 一致 (0,)
maximum_05_tail 一致 (0,)
maximum_06_tail 一致 (0,)
minimum_00_tail 一致 (0,)
minimum_00_aligned 一致 (0,)
minimum_00_broadcast 一致 (0,)
minimum_01_tail 一致 (0,)
minimum_02_tail 一致 (0,)
minimum_02_aligned 一致 (0,)
minimum_02_broadcast 一致 (0,)
minimum_03_tail 一致 (0,)
minimum_04_tail 一致 (0,)
minimum_05_tail 一致 (0,)
minimum_06_tail 一致 (0,)
mod_00_tail 一致 (0,)
mod_00_aligned 一致 (0,)
mod_00_broadcast 一致 (0,)
mod_01_tail 一致 (0,)
mod_02_tail 一致 (0,)
mod_02_aligned 一致 (0,)
mod_02_broadcast 一致 (0,)
mod_03_tail 一致 (0,)
mod_04_tail 一致 (0,)
mod_05_tail 一致 (0,)
mod_06_tail 一致 (0,)
mul_00_tail 一致 (0,)
mul_00_aligned 一致 (0,)
mul_00_broadcast 一致 (0,)
mul_01_tail 一致 (0,)
mul_02_tail 一致 (0,)
mul_03_tail 一致 (0,)
mul_04_tail 一致 (0,)
mul_05_tail 一致 (0,)
mul_06_tail 一致 (0,)
mul_06_aligned 一致 (0,)
mul_06_broadcast 一致 (0,)
mul_07_tail 一致 (0,)
mul_08_tail 一致 (0,)
mul_09_tail 一致 (0,)
mul_10_tail 一致 (0,)
mul_11_tail 一致 (0,)
mul_12_tail 一致 (0,)
mul_13_tail 一致 (0,)
mul_14_tail 一致 (0,)
mul_15_tail 一致 (0,)
muls_00_tail 一致 (0,)
muls_00_aligned 一致 (0,)
muls_00_broadcast 一致 (0,)
muls_01_tail 一致 (0,)
muls_02_tail 一致 (0,)
muls_02_aligned 一致 (0,)
muls_02_broadcast 一致 (0,)
muls_03_tail 一致 (0,)
muls_04_tail 一致 (0,)
muls_05_tail 一致 (0,)
muls_06_tail 一致 (0,)
muls_07_tail 一致 (0,)
not_equal_00_tail 一致 (0,)
not_equal_00_aligned 一致 (0,)
not_equal_00_broadcast 一致 (0,)
not_equal_01_tail 一致 (0,)
not_equal_02_tail 一致 (0,)
not_equal_02_aligned 一致 (0,)
not_equal_02_broadcast 一致 (0,)
not_equal_03_tail 一致 (0,)
not_equal_04_tail 一致 (0,)
not_equal_05_tail 一致 (0,)
not_equal_06_tail 一致 (0,)
not_equal_07_tail 一致 (0,)
not_equal_08_tail 一致 (0,)
pow_00_tail 一致 (0,)
pow_00_aligned 一致 (0,)
pow_00_broadcast 一致 (0,)
pow_01_tail 一致 (0,)
pow_02_tail 一致 (0,)
pow_02_aligned 一致 (0,)
pow_02_broadcast 一致 (0,)
pow_03_tail 一致 (0,)
pow_04_tail 一致 (0,)
pow_05_tail 一致 (0,)
pow_06_tail 一致 (0,)
real_div_00_tail 一致 (0,)
real_div_00_aligned 一致 (0,)
real_div_00_broadcast 一致 (0,)
real_div_01_tail 一致 (0,)
real_div_02_tail 一致 (0,)
real_div_02_aligned 一致 (0,)
real_div_02_broadcast 一致 (0,)
real_div_03_tail 一致 (0,)
real_div_04_tail 一致 (0,)
real_div_05_tail 一致 (0,)
select_00_tail 一致 (0,)
select_00_aligned 一致 (0,)
select_00_broadcast 一致 (0,)
select_01_tail 一致 (0,)
select_02_tail 一致 (0,)
select_03_tail 一致 (0,)
select_04_tail 一致 (0,)
select_05_tail 一致 (0,)
select_06_tail 一致 (0,)
select_07_tail 一致 (0,)
select_v2_00_tail 一致 (0,)
select_v2_00_aligned 一致 (0,)
select_v2_00_broadcast 一致 (0,)
select_v2_01_tail 一致 (0,)
select_v2_02_tail 一致 (0,)
select_v2_03_tail 一致 (0,)
select_v2_04_tail 一致 (0,)
select_v2_05_tail 一致 (0,)
select_v2_06_tail 一致 (0,)
signbit_00_tail 一致 (0,)
signbit_00_aligned 一致 (0,)
signbit_00_broadcast 一致 (0,)
signbit_01_tail 一致 (0,)
signbit_02_tail 一致 (0,)
signbit_02_aligned 一致 (0,)
signbit_02_broadcast 一致 (0,)
signbit_03_tail 一致 (0,)
signbit_04_tail 一致 (0,)
signbit_05_tail 一致 (0,)
signbit_06_tail 一致 (0,)
signbit_07_tail 一致 (0,)
signbit_08_tail 一致 (0,)
signbit_09_tail 一致 (0,)
squared_difference_00_tail 一致 (0,)
squared_difference_00_aligned 一致 (0,)
squared_difference_00_broadcast 一致 (0,)
squared_difference_01_tail 一致 (0,)
squared_difference_02_tail 一致 (0,)
squared_difference_02_aligned 一致 (0,)
squared_difference_02_broadcast 一致 (0,)
squared_difference_03_tail 一致 (0,)
squared_difference_04_tail 一致 (0,)
sub_00_tail 一致 (0,)
sub_00_aligned 一致 (0,)
sub_00_broadcast 一致 (0,)
sub_01_tail 一致 (0,)
sub_02_tail 一致 (0,)
sub_02_aligned 一致 (0,)
sub_02_broadcast 一致 (0,)
sub_03_tail 一致 (0,)
sub_04_tail 一致 (0,)
sub_05_tail 一致 (0,)
sub_06_tail 一致 (0,)
sub_07_tail 一致 (0,)
sub_08_tail 一致 (0,)
sub_09_tail 一致 (0,)
tanh_grad_00_tail 一致 (0,)
tanh_grad_00_aligned 一致 (0,)
tanh_grad_00_broadcast 一致 (0,)
tanh_grad_01_tail 一致 (0,)
tanh_grad_01_aligned 一致 (0,)
tanh_grad_01_broadcast 一致 (0,)
tanh_grad_02_tail 一致 (0,)
tanh_grad_03_tail 一致 (0,)
tanh_grad_04_tail 一致 (0,)
tanh_grad_05_tail 一致 (0,)
tanh_grad_06_tail 一致 (0,)
tanh_grad_07_tail 一致 (0,)
tanh_grad_08_tail 一致 (0,)

【精度标准】与修改前一致

上述用例输出逐字节一致,因此在已测输入范围内精度与修改前一致;不将此结论推广为穷尽所有输入或其他设备。

【性能标准】与修改前一致

按约定判定:基线 <20 μs 的小 shape 允许 1 μs 波动;大 shape 允许 <5% 波动。性能改善单列为改善,不算退化。计时来自 CANN 硬件任务记录,不使用主机墙钟。下表保留原始首轮数据;超阈值项目以明确列出的复测结论评估。

原始性能对照:39 项
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
tanh_grad_00_tail 2.075000 1.914000 -0.161000 -7.7590 小(<20 μs)
sub_00_tail 1.217000 1.281000 +0.064000 +5.2588 小(<20 μs)
squared_difference_00_tail 1.226000 1.290000 +0.064000 +5.2202 小(<20 μs)
signbit_00_tail 1.477000 1.112000 -0.365000 -24.7123 小(<20 μs)
select_v2_00_tail 1.211000 1.209000 -0.002000 -0.1652 小(<20 μs)
select_00_tail 1.203000 1.209000 +0.006000 +0.4988 小(<20 μs)
real_div_00_tail 1.299000 1.328000 +0.029000 +2.2325 小(<20 μs)
pow_00_tail 2.343000 2.160000 -0.183000 -7.8105 小(<20 μs)
not_equal_00_tail 1.352000 0.996000 -0.356000 -26.3314 小(<20 μs)
muls_00_tail 1.375000 1.371000 -0.004000 -0.2909 小(<20 μs)
mul_00_tail 1.222000 1.282000 +0.060000 +4.9100 小(<20 μs)
mod_00_tail 1.973000 1.962000 -0.011000 -0.5575 小(<20 μs)
minimum_00_tail 1.194000 1.235000 +0.041000 +3.4338 小(<20 μs)
maximum_00_tail 1.194000 1.236000 +0.042000 +3.5176 小(<20 μs)
logical_or_00_tail 1.294000 0.833000 -0.461000 -35.6260 小(<20 μs)
logical_and_00_tail 1.296000 0.834000 -0.462000 -35.6481 小(<20 μs)
less_equal_00_tail 1.354000 0.995000 -0.359000 -26.5140 小(<20 μs)
less_00_tail 1.354000 0.995000 -0.359000 -26.5140 小(<20 μs)
lerp_00_tail 2.186000 2.042000 -0.144000 -6.5874 小(<20 μs)
greater_equal_00_tail 1.351000 0.996000 -0.355000 -26.2768 小(<20 μs)
greater_00_tail 1.353000 0.994000 -0.359000 -26.5336 小(<20 μs)
ger_00_tail 2.783000 2.641000 -0.142000 -5.1024 小(<20 μs)
gcd_00_tail 1.621000 1.159000 -0.462000 -28.5009 小(<20 μs)
floor_mod_00_tail 2.085000 2.065000 -0.020000 -0.9592 小(<20 μs)
floor_div_00_tail 1.301000 1.323000 +0.022000 +1.6910 小(<20 μs)
equal_00_tail 1.354000 0.995000 -0.359000 -26.5140 小(<20 μs)
div_no_nan_00_tail 1.286000 1.288000 +0.002000 +0.1555 小(<20 μs)
div_00_tail 1.296000 1.325000 +0.029000 +2.2377 小(<20 μs)
clip_by_value_v2_00_tail 1.641000 1.657000 +0.016000 +0.9750 小(<20 μs)
clip_by_value_00_tail 1.649000 1.655000 +0.006000 +0.3639 小(<20 μs)
bitwise_xor_00_tail 1.293000 0.834000 -0.459000 -35.4988 小(<20 μs)
bitwise_or_00_tail 1.295000 0.835000 -0.460000 -35.5212 小(<20 μs)
bitwise_and_00_tail 1.295000 0.835000 -0.460000 -35.5212 小(<20 μs)
bias_add_00_tail 2.518000 2.154000 -0.364000 -14.4559 小(<20 μs)
axpy_v2_00_tail 1.443000 1.577000 +0.134000 +9.2862 小(<20 μs)
axpy_00_tail 1.586000 1.488000 -0.098000 -6.1791 小(<20 μs)
addcmul_00_tail 1.653000 1.411000 -0.242000 -14.6400 小(<20 μs)
addcdiv_00_tail 1.675000 1.421000 -0.254000 -15.1642 小(<20 μs)
add_00_tail 1.216000 1.282000 +0.066000 +5.4276 小(<20 μs)
新增大规模候选:78 项(含少量实际 <20 μs 的候选)
用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
add_large_tail 106.999000 105.487000 -1.512000 -1.4131 大(≥20 μs)
add_large_broadcast 54.455000 55.885000 +1.430000 +2.6260 大(≥20 μs)
addcdiv_large_tail 162.865000 162.554000 -0.311000 -0.1910 大(≥20 μs)
addcdiv_large_broadcast 115.698000 115.504000 -0.194000 -0.1677 大(≥20 μs)
addcmul_large_tail 160.214000 160.465000 +0.251000 +0.1567 大(≥20 μs)
addcmul_large_broadcast 110.803000 110.138000 -0.665000 -0.6002 大(≥20 μs)
axpy_large_tail 106.441000 106.358000 -0.083000 -0.0780 大(≥20 μs)
axpy_large_broadcast 55.506000 55.917000 +0.411000 +0.7405 大(≥20 μs)
axpy_v2_large_tail 105.603000 106.666000 +1.063000 +1.0066 大(≥20 μs)
axpy_v2_large_broadcast 52.986000 55.842000 +2.856000 +5.3901 大(≥20 μs)
bias_add_large_tail 50.999000 53.098000 +2.099000 +4.1158 大(≥20 μs)
bias_add_large_broadcast 54.705000 55.691000 +0.986000 +1.8024 大(≥20 μs)
bitwise_and_large_tail 22.217000 22.237000 +0.020000 +0.0900 大(≥20 μs)
bitwise_and_large_broadcast 13.556000 13.512000 -0.044000 -0.3246 小(<20 μs)
bitwise_or_large_tail 22.254000 22.288000 +0.034000 +0.1528 大(≥20 μs)
bitwise_or_large_broadcast 13.634000 13.569000 -0.065000 -0.4767 小(<20 μs)
bitwise_xor_large_tail 22.272000 22.341000 +0.069000 +0.3098 大(≥20 μs)
bitwise_xor_large_broadcast 13.443000 13.471000 +0.028000 +0.2083 小(<20 μs)
clip_by_value_large_tail 50.291000 52.096000 +1.805000 +3.5891 大(≥20 μs)
clip_by_value_large_broadcast 50.339000 52.043000 +1.704000 +3.3850 大(≥20 μs)
clip_by_value_v2_large_tail 50.400000 51.960000 +1.560000 +3.0952 大(≥20 μs)
clip_by_value_v2_large_broadcast 50.524000 52.172000 +1.648000 +3.2618 大(≥20 μs)
div_large_tail 109.349000 109.842000 +0.493000 +0.4509 大(≥20 μs)
div_large_broadcast 87.724000 87.680000 -0.044000 -0.0502 大(≥20 μs)
div_no_nan_large_tail 106.422000 107.341000 +0.919000 +0.8635 大(≥20 μs)
div_no_nan_large_broadcast 54.412000 56.207000 +1.795000 +3.2989 大(≥20 μs)
equal_large_tail 91.110000 91.875000 +0.765000 +0.8396 大(≥20 μs)
equal_large_broadcast 48.137000 47.718000 -0.419000 -0.8704 大(≥20 μs)
floor_div_large_tail 109.143000 109.002000 -0.141000 -0.1292 大(≥20 μs)
floor_div_large_broadcast 88.825000 88.603000 -0.222000 -0.2499 大(≥20 μs)
floor_mod_large_tail 284.289000 283.947000 -0.342000 -0.1203 大(≥20 μs)
floor_mod_large_broadcast 313.386000 313.285000 -0.101000 -0.0322 大(≥20 μs)
gcd_large_tail 161.309000 161.311000 +0.002000 +0.0012 大(≥20 μs)
gcd_large_broadcast 157.357000 157.347000 -0.010000 -0.0064 大(≥20 μs)
ger_large_tail 21.325000 21.227000 -0.098000 -0.4596 大(≥20 μs)
ger_large_broadcast 21.287000 21.163000 -0.124000 -0.5825 大(≥20 μs)
greater_large_tail 92.521000 91.437000 -1.084000 -1.1716 大(≥20 μs)
greater_large_broadcast 48.297000 48.181000 -0.116000 -0.2402 大(≥20 μs)
greater_equal_large_tail 92.726000 91.733000 -0.993000 -1.0709 大(≥20 μs)
greater_equal_large_broadcast 48.348000 48.083000 -0.265000 -0.5481 大(≥20 μs)
lerp_large_tail 161.412000 160.054000 -1.358000 -0.8413 大(≥20 μs)
lerp_large_broadcast 110.753000 112.050000 +1.297000 +1.1711 大(≥20 μs)
less_large_tail 90.410000 91.065000 +0.655000 +0.7245 大(≥20 μs)
less_large_broadcast 47.262000 48.231000 +0.969000 +2.0503 大(≥20 μs)
less_equal_large_tail 90.412000 91.031000 +0.619000 +0.6846 大(≥20 μs)
less_equal_large_broadcast 47.358000 47.884000 +0.526000 +1.1107 大(≥20 μs)
logical_and_large_tail 22.401000 22.286000 -0.115000 -0.5134 大(≥20 μs)
logical_and_large_broadcast 13.550000 13.572000 +0.022000 +0.1624 小(<20 μs)
logical_or_large_tail 91.861000 92.582000 +0.721000 +0.7849 大(≥20 μs)
logical_or_large_broadcast 47.708000 48.699000 +0.991000 +2.0772 大(≥20 μs)
maximum_large_tail 107.129000 105.763000 -1.366000 -1.2751 大(≥20 μs)
maximum_large_broadcast 55.741000 56.620000 +0.879000 +1.5769 大(≥20 μs)
minimum_large_tail 107.156000 105.525000 -1.631000 -1.5221 大(≥20 μs)
minimum_large_broadcast 56.093000 56.567000 +0.474000 +0.8450 大(≥20 μs)
mod_large_tail 445.397000 445.401000 +0.004000 +0.0009 大(≥20 μs)
mod_large_broadcast 449.851000 449.384000 -0.467000 -0.1038 大(≥20 μs)
mul_large_tail 107.409000 105.826000 -1.583000 -1.4738 大(≥20 μs)
mul_large_broadcast 55.987000 56.815000 +0.828000 +1.4789 大(≥20 μs)
muls_large_tail 52.527000 52.098000 -0.429000 -0.8167 大(≥20 μs)
muls_large_broadcast 52.530000 52.234000 -0.296000 -0.5635 大(≥20 μs)
not_equal_large_tail 92.061000 92.549000 +0.488000 +0.5301 大(≥20 μs)
not_equal_large_broadcast 47.757000 48.623000 +0.866000 +1.8133 大(≥20 μs)
pow_large_tail 191.399000 190.638000 -0.761000 -0.3976 大(≥20 μs)
pow_large_broadcast 198.135000 197.784000 -0.351000 -0.1772 大(≥20 μs)
real_div_large_tail 110.380000 109.388000 -0.992000 -0.8987 大(≥20 μs)
real_div_large_broadcast 87.874000 87.688000 -0.186000 -0.2117 大(≥20 μs)
select_large_tail 120.977000 120.376000 -0.601000 -0.4968 大(≥20 μs)
select_large_broadcast 121.115000 120.375000 -0.740000 -0.6110 大(≥20 μs)
select_v2_large_tail 121.077000 120.236000 -0.841000 -0.6946 大(≥20 μs)
select_v2_large_broadcast 121.046000 120.354000 -0.692000 -0.5717 大(≥20 μs)
signbit_large_tail 45.285000 45.801000 +0.516000 +1.1395 大(≥20 μs)
signbit_large_broadcast 45.510000 45.807000 +0.297000 +0.6526 大(≥20 μs)
squared_difference_large_tail 107.047000 105.713000 -1.334000 -1.2462 大(≥20 μs)
squared_difference_large_broadcast 56.268000 56.699000 +0.431000 +0.7660 大(≥20 μs)
sub_large_tail 107.078000 105.482000 -1.596000 -1.4905 大(≥20 μs)
sub_large_broadcast 55.985000 56.658000 +0.673000 +1.2021 大(≥20 μs)
tanh_grad_large_tail 108.096000 106.382000 -1.714000 -1.5856 大(≥20 μs)
tanh_grad_large_broadcast 54.908000 55.304000 +0.396000 +0.7212 大(≥20 μs)

首轮超阈值复测:AxpyV2 广播首轮 +5.39%。采用 修改前 → 修改后 → 修改后 → 修改前 顺序,每轮 100 次,两轮中位数合并结果如下,复测满足 <5% 阈值。

用例 修改前 μs 修改后 μs 差值 μs 差值 % 分类/说明
axpy_v2_large_broadcast 58.488500 59.141500 +0.653000 +1.1165 大(≥20 μs)

验证边界与待办

历史联调已覆盖大小 shape;当前变基后的全量设备回归和最终远程依赖版本默认构建未完成。Ascend350 仅有配置/源码审查,未做硬件验证。此附件发布已有结果,不代表专项已完成最终交付。

性能复测方法:按“修改前 → 修改后 → 修改后 → 修改前”的顺序执行四轮,每轮启动 100 次。每轮使用硬件任务耗时,丢弃首次样本后取中位数;分别对两轮修改前、两轮修改后的中位数取平均,作为最终对照耗时。变化率 =(修改后耗时 − 修改前耗时)÷ 修改前耗时 × 100%。该顺序用于减轻温度、频率等随时间变化带来的测量偏差,不能完全消除干扰。

算子 UT 及本地验证

Add 沿用既有 ExecuteTestCase 注册调用路径,两条原有用例检查 workspace 为 0。公共 tests/ut/common 测试框架文件与 PR 基线完全一致;本 PR 的 UT 改动均位于各算子 tests/ut 目录。

本地重新编译最终 Add 测试对象,重建静态归档并确认归档包含新对象,随后完成 math_op_host_ut 最终链接。当前本地 Host UT 333/333 通过,39 个 PR 改动文件 pre-commit 通过。环境为 CANN 9.2.0、已接入 Broadcast workspace 补丁的既有联调依赖;不替代 CANN 9.3.0 CI 的新流水线结果。

likedislike
合并受阻
zhang-song-ruizhang-song-rui成员
22 天前 创建了 pull request,commit b9556891
atomgit-bot
atomgit-bot
22 天前 评论:

变更摘要

本 PR 的主题是移除算子中未实际使用的向量系统 workspace 预留。此前多个算子通过 ascendcPlatform.GetLibApiWorkSpaceSize() 或固定常量(如 16777216、32)向 tiling context 申请 workspace,但实际并未使用。改动将相关 tiling 中的 workspace 大小统一置为 0,并同步移除了 kernel 侧 Init 接口中不再需要的 GM_ADDR workspace 参数,同时更新了大量 UT 的期望值并新增了非连续调度下的校验用例。此外,cmake/third_party/opbase.cmake 中增加了对本地 opbase 源码目录的支持。

主要改动

  • tiling 中 workspace 统一置 0: 在 muls_tiling_arch35.cpp、pow_tiling_arch35.cpp 中移除 platform_ascendc::PlatformAscendC 与 GetLibApiWorkSpaceSize() 调用,直接设置 currentWorkspace[0] = 0;lerp_tiling_arch35.cpp、select_simt_tiling.cpp、tanh_grad_tiling_arch35.cpp 删除 WORKSPACE_SIZE 常量并将 workspaceSize_ 设为 0。
  • kernel Init 接口移除 workspace 参数: lerp_apt.cpp、pow_apt.cpp、tanh_grad_apt.cpp 及其 arch35 下各 NDDMA 实现头文件中的 Init(...) 签名去掉 GM_ADDR workspace,调用点同步调整,收敛了内核入口参数。
  • pow kernel 删除系统 workspace 获取逻辑: pow_apt.cpp 中移除 SetSysWorkspace、GetUserWorkspace 调用以及 workspace == nullptr / userWS == nullptr 的提前返回分支。
  • UT 期望值更新与新增校验用例: 大量算子的 expectWorkspaces / expectedWorkspaces 由 {16777216} 或 {32} 改为 {0};test_add_tiling.cpp 新增 shared_broadcast_noncontiguous_workspace 用例,校验注册入口在三种非连续调度模式下 GetWorkspaceSizes(1)[0] 为 0 且 GetTilingKey() 与模式匹配。
  • opbase 本地源码目录支持: opbase.cmake 新增 OPBASE_LOCAL_SOURCE_DIR 缓存变量用于指定本地 opbase 源码路径并做有效性校验,同时在缓存 include 目录与实际源目录不一致时清空 OPBASE_INC_DIR。

🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
atomgit-bot
atomgit-bot
22 天前 评论:

代码审查

✅ 未发现问题


🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
CANN-robotCANN-robot成员
22 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
22 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
conversion/clip_by_value_v2 ❌ (0/2)(You can also ask: 周奇龙, 冯彤, 王瑞, 顾宝成, yue-ma) ❌ (0/1)(You can also ask: 王瑞, zhangzijie, 王林木, zhangyuxiang0119, zhanw_coding)
math/add ❌ (0/2)(You can also ask: andong_hw, 唐燕峰, yue-ma, 张磊, 顾宝成) ❌ (0/1)(You can also ask: xuejinghui, 顾宝成, 徐鲁威, zhangzijie, 汤平川)
math/addcdiv ❌ (0/2)(You can also ask: yue-ma, clinglai0517, zhanw_coding, 顾宝成, onanfield) ❌ (0/1)(You can also ask: 周奇龙, yue-ma, 王瑞, 宋恺, zhangzijie)
math/addcmul ❌ (0/2)(You can also ask: 宋恺, yue-ma, 冯彤, 周奇龙, 王瑞) ❌ (0/1)(You can also ask: 张磊, 顾宝成, 徐鲁威, xuejinghui, clinglai0517)
math/axpy ❌ (0/2)(You can also ask: onanfield, 宋恺, yue-ma, andong_hw, zhangzijie) ❌ (0/1)(You can also ask: andong_hw, xuejinghui, zhangyuxiang0119, 顾宝成, zhanw_coding)
math/axpy_v2 ❌ (0/2)(You can also ask: zhanw_coding, 冯彤, clinglai0517, 陈兴宇, onanfield) ❌ (0/1)(You can also ask: 顾宝成, onanfield, yue-ma, zhangyuxiang0119, 王瑞)
math/div ❌ (0/2)(You can also ask: 冯彤, 周奇龙, zhangyuxiang0119, 张磊, andong_hw) ❌ (0/1)(You can also ask: 陈兴宇, 徐鲁威, xuejinghui, andong_hw, onanfield)
math/equal ❌ (0/2)(You can also ask: onanfield, 陈兴宇, 冯彤, yue-ma, xuejinghui) ❌ (0/1)(You can also ask: 陈兴宇, 王林木, zhangyuxiang0119, 顾宝成, 宋恺)
math/floor_div ❌ (0/2)(You can also ask: 徐鲁威, xuejinghui, 周奇龙, 唐燕峰, 王林木) ❌ (0/1)(You can also ask: 张磊, zhanw_coding, 徐鲁威, 汤平川, xuejinghui)
math/floor_mod ❌ (0/2)(You can also ask: 唐燕峰, yue-ma, 徐鲁威, 张磊, 宋恺) ❌ (0/1)(You can also ask: 宋恺, 汤平川, zhanw_coding, 张磊, xuejinghui)
math/greater ❌ (0/2)(You can also ask: andong_hw, 宋恺, onanfield, 王林木, jia0liang) ❌ (0/1)(You can also ask: 宋恺, xuejinghui, 张磊, 陈兴宇, zhangyuxiang0119)
math/greater_equal ❌ (0/2)(You can also ask: 冯彤, clinglai0517, 唐燕峰, 张磊, 周奇龙) ❌ (0/1)(You can also ask: zhangyuxiang0119, 陈兴宇, 王林木, 宋恺, 汤平川)
math/lerp ❌ (0/2)(You can also ask: jia0liang, 陈兴宇, 顾宝成, zhangzijie, 冯彤) ❌ (0/1)(You can also ask: 唐燕峰, 宋恺, 徐鲁威, 王林木, zhanw_coding)
math/less ❌ (0/2)(You can also ask: 王瑞, 周奇龙, clinglai0517, zhangzijie, zhanw_coding) ❌ (0/1)(You can also ask: zhangzijie, 唐燕峰, 张磊, 王林木, 汤平川)
math/less_equal ❌ (0/2)(You can also ask: xuejinghui, zhanw_coding, 周奇龙, yue-ma, onanfield) ❌ (0/1)(You can also ask: 顾宝成, 王林木, zhanw_coding, xuejinghui, 汤平川)
math/logical_and ❌ (0/2)(You can also ask: 徐鲁威, zhangyuxiang0119, 王瑞, jia0liang, 张磊) ❌ (0/1)(You can also ask: onanfield, 王林木, 唐燕峰, 张磊, 徐鲁威)
math/logical_or ❌ (0/2)(You can also ask: jia0liang, zhanw_coding, 宋恺, yue-ma, 王林木) ❌ (0/1)(You can also ask: 陈兴宇, 唐燕峰, zhanw_coding, 周奇龙, clinglai0517)
math/maximum ❌ (0/2)(You can also ask: 张磊, onanfield, 宋恺, zhangyuxiang0119, 陈兴宇) ❌ (0/1)(You can also ask: 顾宝成, 王瑞, onanfield, 陈兴宇, andong_hw)
math/minimum ❌ (0/2)(You can also ask: 顾宝成, andong_hw, 宋恺, jia0liang, xuejinghui) ❌ (0/1)(You can also ask: xuejinghui, 唐燕峰, 陈兴宇, onanfield, 顾宝成)
math/mod ❌ (0/2)(You can also ask: 冯彤, zhanw_coding, zhangzijie, 陈兴宇, 张磊) ❌ (0/1)(You can also ask: yue-ma, 陈兴宇, 王林木, zhangzijie, 徐鲁威)
math/mul ❌ (0/2)(You can also ask: zhanw_coding, 张磊, clinglai0517, 徐鲁威, 王瑞) ❌ (0/1)(You can also ask: 徐鲁威, 王瑞, zhangzijie, xuejinghui, 陈兴宇)
math/muls ❌ (0/2)(You can also ask: 宋恺, zhangzijie, andong_hw, 汤平川, jia0liang) ❌ (0/1)(You can also ask: 陈兴宇, 冯彤, 唐燕峰, onanfield, yue-ma)
math/not_equal ❌ (0/2)(You can also ask: clinglai0517, 张磊, 王瑞, zhangzijie, 王林木) ❌ (0/1)(You can also ask: 宋恺, 王林木, 徐鲁威, 陈兴宇, zhangyuxiang0119)
math/pow ❌ (0/2)(You can also ask: 宋恺, 冯彤, 陈兴宇, 唐燕峰, xuejinghui) ❌ (0/1)(You can also ask: yue-ma, 唐燕峰, 徐鲁威, zhangzijie, 王瑞)
math/real_div ❌ (0/2)(You can also ask: yue-ma, 王林木, 汤平川, clinglai0517, 周奇龙) ❌ (0/1)(You can also ask: clinglai0517, onanfield, 宋恺, 汤平川, zhanw_coding)
math/select ❌ (0/2)(You can also ask: zhangzijie, 唐燕峰, 周奇龙, clinglai0517, 宋恺) ❌ (0/1)(You can also ask: 徐鲁威, 王瑞, yue-ma, clinglai0517, 顾宝成)
math/sub ❌ (0/2)(You can also ask: zhanw_coding, yue-ma, zhangzijie, 陈兴宇, 顾宝成) ❌ (0/1)(You can also ask: onanfield, yue-ma, 周奇龙, xuejinghui, 徐鲁威)
math/tanh_grad ❌ (0/2)(You can also ask: zhangzijie, onanfield, 王瑞, 唐燕峰, 宋恺) ❌ (0/1)(You can also ask: yue-ma, 冯彤, 王林木, 宋恺, 张磊)
repo-cann/ops-math ❌ (0/2)(You can also ask: zhanw_coding, zhangzijie, yue-ma, clinglai0517, xuejinghui) ❌ (0/1)(You can also ask: 顾宝成, 冯彤, zhanw_coding, yue-ma, onanfield)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

zhang-song-rui, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了121条消息 查看更多
zhang-song-ruizhang-song-rui成员
8 天前 预合并成功(commit_id: afe126ca08f0bf0cb0ae48c8e1939e241ed938e8)
zhang-song-ruizhang-song-rui成员
8 天前 修改标题为 “fix: remove unused vector system workspace”,原标题为“test: 更新 BRC 模板算子的 workspace UT 期望”
zhang-song-ruizhang-song-rui成员
8 天前 修改了pull request 的描述
CANN-robotCANN-robot成员
8 天前 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
8 天前 添加了label:cann-cla/yes