已合并
下一代assign和tensormove算子开发 #724
zl_hw创建于 1月12日
下一代assign和tensormove算子开发 #724
已合并
zl_hw创建于 1月12日
zl_hw成员
1月12日

描述

关联的Issue

测试

文档更新

类型标签

  • Bug修复
  • 新特性
  • 性能优化
  • 文档更新
  • 其他,请描述:
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zl_hw 的贡献)
CANN-robot
CANN-robot成员
1月12日 评论:

Thank your for your pull-request.

The full list of commands accepted by me can be found at here.

You can get sig-info at here

likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

以下是根据您提交的修改文件推荐的Reviewer和Committer序列,需各模块评审通过后方可合入

Module List Reviewers Committers
repo-cann/ops-math N/A loov1, wangrui_, songkai111, zhou-qilong, gubaocheng
conversion/tensor_move N/A rxtfeng, zhangyuxiang0119, zhou-qilong, gubaocheng, loov1
likedislike
CANN-robotCANN-robot成员
1月12日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
1月12日 评论:

🔵 source code change are detected, tasks labels is removed in this pull request!

likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视2
conversion/assign/op_graph/assign_proto.h
已过期
@@ -0,0 +17,4 @@
17+namespace ge {
18+ 
19+/**
20+*@brief Updates "ref" by assigning "value" to it. Donot support broadcasting operations.
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 注释中存在拼写错误。第20行注释中的'Donot'应为'Does not'或'Doesn't',这是不规范的英文表达,会影响代码文档的可读性和专业性。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_graph/assign_proto.h
行号: 20
问题代码:

*@brief Updates "ref" by assigning "value" to it. Donot support broadcasting operations.

修改建议:

将'Donot'修改为'Does not'或'Doesn't'。建议修改为:'*@brief Updates "ref" by assigning "value" to it. Does not support broadcasting operations.'

此评论由代码审查工具自动生成

likedislike
System
系统消息系统
1月12日 评论:
likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视1
conversion/assign/op_graph/assign_proto.h
@@ -0,0 +35,4 @@
35+*@li use_locking: An optional bool. Defaults to false.
36+ If True, the assignment will be protected by a lock;
37+ otherwise the behavior is undefined, but may exhibit less contention.
38+* This attribute is reserved. \n
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 注释中说明'validate_shape'和'use_locking'属性是'reserved'(保留的)。但在代码实现中(第51-52行),它们被定义了默认值(true和false)。'reserved'通常意味着该属性当前未实现或未使用,但为其定义了默认值可能会误导用户,认为该功能已生效。这存在文档与实现不一致的风险。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_graph/assign_proto.h
行号: 38
问题代码:

*                 This attribute is reserved. \n

修改建议:

建议统一处理:1. 如果属性确实未实现,应在代码中明确标注(例如通过注释),并考虑是否需要在REG_OP中定义它们(如果定义是为了向前兼容,则应在文档中说明)。2. 如果属性已实现,则应从文档中移除'reserved'字样。最佳实践是确保文档准确反映代码行为。

此评论由代码审查工具自动生成

likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视2
conversion/assign/op_host/arch35/assign_tiling_arch35.cpp
已过期
@@ -0,0 +24,4 @@
24+namespace optiling {
25+ 
26+// the minimum num for one core
27+constexpr int64_t core_minimum_num = 4;
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 定义了常量core_minimum_num = 4,但在代码中从未使用。这可能是遗留代码或计划未来使用的常量,当前属于无用代码。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_host/arch35/assign_tiling_arch35.cpp
行号: 27
问题代码:

constexpr int64_t core_minimum_num = 4;

修改建议:

如果确实不需要,请删除该常量定义。如果需要,请在代码中添加相关使用逻辑。

此评论由代码审查工具自动生成

likedislike
System
系统消息系统
1月12日 评论:
likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视2
conversion/assign/op_host/arch35/assign_tiling_arch35.cpp
已过期
@@ -0,0 +25,4 @@
25+ 
26+// the minimum num for one core
27+constexpr int64_t core_minimum_num = 4;
28+constexpr int64_t block_size = 32; // one block size is 32Bytes
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 定义了常量block_size = 32,但在代码中从未使用(第34行使用了ONE_BLK_BYTE = 32)。存在重复定义的常量,可能造成混淆。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_host/arch35/assign_tiling_arch35.cpp
行号: 28
问题代码:

constexpr int64_t block_size = 32; // one block size is 32Bytes

修改建议:

统一常量定义,删除block_size或将其重命名为ONE_BLK_BYTE并替换所有使用ONE_BLK_BYTE的地方。

此评论由代码审查工具自动生成

likedislike
System
系统消息系统
1月12日 评论:
likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视1
conversion/assign/op_host/arch35/assign_tiling_arch35.h
@@ -0,0 +36,4 @@
36+ int64_t tilingKey;
37+};
38+ 
39+struct AssignCompileInfo {
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 结构体AssignCompileInfo的成员变量命名(core_num, ub_size)与AssignTilingParam的成员变量命名(totalCoreNum, ubSize)风格不一致。AssignCompileInfo使用下划线分隔,而AssignTilingParam使用驼峰命名法。在同一头文件的相邻结构体中,命名风格不统一,影响代码一致性。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_host/arch35/assign_tiling_arch35.h
行号: 39
问题代码:

struct AssignCompileInfo {
  int64_t core_num;
  int64_t ub_size;
};

修改建议:

建议统一整个文件或模块的命名风格。如果项目约定结构体成员使用下划线命名法,则应将AssignTilingParam的成员改为下划线风格(如total_core_num, ub_size等)。反之,如果约定使用驼峰命名法,则应将AssignCompileInfo的成员改为驼峰风格(如coreNum, ubSize)。

此评论由代码审查工具自动生成

likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视1
conversion/assign/op_host/arch35/assign_tiling_arch35.h
@@ -0,0 +41,4 @@
41+ int64_t ub_size;
42+};
43+ 
44+} // namespace optiling
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: 文件末尾缺少换行符(No newline at end of file)。虽然这不影响编译,但不符合许多代码规范(如POSIX标准),可能导致某些工具(如diff、cat)在处理文件时产生意外行为或警告。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_host/arch35/assign_tiling_arch35.h
行号: 44
问题代码:

} // namespace optiling
#endif // AIR_CXX_RUNTIME_V2_OP_IMPL_ASSIGN_H_

修改建议:

在文件最后一行添加一个换行符。

此评论由代码审查工具自动生成

likedislike
CANN-robot
CANN-robot成员1月12日进行代码检视1
conversion/assign/op_kernel/arch35/assign_scalar.h
@@ -0,0 +50,4 @@
50+};
51+ 
52+template <typename T>
53+__aicore__ inline void AssignScalarKernel<T>::Init(GM_ADDR x, GM_ADDR y, GM_ADDR workspace,
CANN-robot
CANN-robot1月12日评论:

代码结构与可维护性: Init函数的workspace参数未被使用。虽然这可能是在其他版本或上下文中预留的参数,但未使用的参数可能引起混淆。

问题类型: 代码结构与可维护性
文件路径: conversion/assign/op_kernel/arch35/assign_scalar.h
行号: 53
问题代码:

__aicore__ inline void AssignScalarKernel<T>::Init(GM_ADDR x, GM_ADDR y, GM_ADDR workspace,
    const TensorMoveTilingData &tilingData)

修改建议:

如果workspace确实不需要,可以考虑从参数列表中移除,或者在函数体内添加注释说明其预留目的。如果未来可能使用,应添加相关处理逻辑。

此评论由代码审查工具自动生成

likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

问题/功能描述

本次PR主要实现两个核心算子:AssignTensorMoveAssign算子用于将一个张量的值赋值给另一个同形状、同数据类型的张量,不支持广播,旨在为深度学习框架提供基础的变量更新功能,兼容TensorFlow的Assign算子行为。TensorMove算子用于实现张量数据在设备内存间的高效拷贝,是一个通用的数据搬运基础操作。两个算子均支持多种数据类型(包括浮点、整数、布尔、复数等)和动态形状/动态秩。

修改方案描述

新增了AssignTensorMove算子的完整实现,包括算子定义、形状推导、内核实现、Tiling策略及单元测试。具体包括:1)为两个算子分别定义了算子原型、接口及数据类型/形状校验逻辑;2)实现了针对AscendC架构(arch35)的高性能内核代码和Tiling算法,完成数据分片、核数分配和内存优化;3)为Assign算子提供了针对标量赋值场景的特殊处理;4)新增了完整的单元测试框架和测试用例,覆盖形状推断、Tiling计算等功能点;5)更新了相关的CMake构建配置和算子配置文件(JSON/INI),确保算子正确集成与部署。

likedislike
Zzl_hw成员
1月12日 强制推送  1 个提交:65bcf05e-下一代assign和tensormove算子开发
CANN-robot
CANN-robot成员
1月12日 评论:

以下是根据您提交的修改文件推荐的Reviewer和Committer序列,需各模块评审通过后方可合入

Module List Reviewers Committers
math/sort N/A rxtfeng, zhangyuxiang0119, zhou-qilong, gubaocheng, loov1
repo-cann/ops-math N/A loov1, wangrui_, songkai111, zhou-qilong, gubaocheng
conversion/contiguous N/A wangrui_, songkai111, FelixTang7, rxtfeng, zhangyuxiang0119
conversion/tensor_move N/A songkai111, FelixTang7, rxtfeng, zhangyuxiang0119, zhou-qilong
conversion/trans_data N/A loov1, songkai111, FelixTang7, rxtfeng, zhangyuxiang0119
likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

🔵 source code change are detected, tasks labels is removed in this pull request!

likedislike
Zzl_hw成员
1月12日 强制推送  1 个提交:d5230ad6-下一代assign和tensormove算子开发
CANN-robot
CANN-robot成员
1月12日 评论:

以下是根据您提交的修改文件推荐的Reviewer和Committer序列,需各模块评审通过后方可合入

Module List Reviewers Committers
conversion/tensor_move N/A songkai111, FelixTang7, rxtfeng, zhangyuxiang0119, zhou-qilong
conversion/trans_data N/A zhou-qilong, gubaocheng, loov1, songkai111, FelixTang7
math/sort N/A zhangyuxiang0119, zhou-qilong, gubaocheng, loov1, wangrui_
repo-cann/ops-math N/A loov1, wangrui_, songkai111, zhou-qilong, gubaocheng
conversion/contiguous N/A wangrui_, songkai111, FelixTang7, rxtfeng, zhangyuxiang0119
likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

🔵 source code change are detected, tasks labels is removed in this pull request!

likedislike
Zzl_hw成员
1月12日 强制推送  1 个提交:c7adb586-下一代assign和tensormove算子开发
CANN-robot
CANN-robot成员
1月12日 评论:

以下是根据您提交的修改文件推荐的Reviewer和Committer序列,需各模块评审通过后方可合入

Module List Reviewers Committers
conversion/tensor_move N/A loov1, wangrui_, songkai111, FelixTang7, rxtfeng
conversion/trans_data N/A zhangyuxiang0119, wangrui_, zhou-qilong, gubaocheng, loov1
math/sort N/A loov1, wangrui_, songkai111, FelixTang7, rxtfeng
repo-cann/ops-math N/A zhou-qilong, gubaocheng, loov1, wangrui_, songkai111
conversion/contiguous N/A FelixTang7, rxtfeng, zhangyuxiang0119, zhou-qilong, gubaocheng
likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

CLA Signature Pass

zl_hw, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robot
CANN-robot成员
1月12日 评论:

🔵 source code change are detected, tasks labels is removed in this pull request!

likedislike
zl_hw成员
1月13日 评论:

compile

likedislike
CANN-robotCANN-robot成员
1月13日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
1月13日 评论:

流水线任务触发成功,任务链接 [b7abc7445efe4ce2a0bf74a53241045b]

任务名称状态日志下载链接
codecheck ❌ FAILED >>>>>
SCA ❌ FAILED >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_experimental ✅ SUCCESS >>>>> >>>>>
Smoke_A900 ✅ SUCCESS >>>>>
API_Check ⚠️ WARNING >>>>>
UT_Test ⚪ ABORTED
UT_Test_experimental ⚪ ABORTED

[2026-01-13 11:02:23]    CI执行失败

likedislike
CANN-robotCANN-robot成员
1月13日 添加了label:api-check-failed
CANN-robotCANN-robot成员
1月13日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
1月13日 添加了label:ci-pipeline-failed
CANN-robot
CANN-robot成员
1月13日 评论:
zl_hw成员
1月13日 评论:

compile

likedislike
CANN-robotCANN-robot成员
1月13日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
1月13日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
1月13日 删除了label:api-check-failed
CANN-robot
CANN-robot成员
1月13日 评论:

流水线任务触发成功,任务链接 [b59c58a00ab54a708eb3284752f682ef]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
anti_virus ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_experimental ✅ SUCCESS >>>>> >>>>>
Smoke_A900 ✅ SUCCESS >>>>>
API_Check ⚠️ WARNING >>>>>
UT_Test ✅ SUCCESS
UT_Test_experimental ✅ SUCCESS

[2026-01-13 12:07:57]    CI执行结束

likedislike
CANN-robotCANN-robot成员
1月13日 添加了label:api-check-failed
此处折叠了6条事件消息 查看更多
Zzl_hw成员
1月13日 关联了issue:[Requirement|需求建议]: 支持下一代assign和tensor_move搬运类算子
songkai111成员
1月13日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
1月13日 添加了label:approved
RuiWang_成员
1月13日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
1月13日 添加了label:lgtm
CANN-robot
CANN-robot成员
1月13日 评论:

Review Guide

This Pull-Request Passes Review.
Committers who wrote a comment of /approve are: songkai111.
Reviewers who wrote a comment of /lgtm are: wangrui_, songkai111.

likedislike
CANN-robotCANN-robot成员
1月13日 关闭了关联的issue
CANN-robotCANN-robot成员
1月13日 合入了pull request