Closed
[Requirement|需求建议]: 新增带inplaceFlag参数的ViewCopy重载接口以支持inplace类viewcopy接口支持aclnn缓存 #4461
ren-botaoAdd on  6 days agoClosed at  5 days ago
ren-botaoCollaborators
6 days ago Create

一、背景信息 (必填)

原 namespace l0op { const aclTensor* ViewCopy(const aclTensor* x, const aclTensor* y, aclOpExecutor* executor); }接口,
在inpalce场景,即算子的输入输出是inplace的,ViewCopy的入参x和y都是L2的入参,且device内存一样,
该场景不支持aclnn缓存,倒是aclnn算子性能不行。

现在新增带inplaceFlag参数的 ViewCopy 重载接口,当调用放明确该接口时inplace的,就能支持缓存。

二、价值/作用 (必填)

inplace的viewcopy算子支持aclnn缓存,提升inplace类选自host侧性能。

三、设计方案 (必填)

3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)

torch、aclnn直调

3.2 总体设计
3.2.1 算子支持的数据类型

公共接口,不涉及

3.2.2 host侧设计

新增 ViewCopy 重载声明: 在 common/inc/external/aclnn_kernels/contiguous.h 中新增 const aclTensor* ViewCopy(const aclTensor* x, const aclTensor* y, aclOpExecutor* executor, bool inplaceFlag) 声明,对外暴露带原地标志的拷贝接口。
原接口保持兼容并转发: 在 conversion/contiguous/op_host/op_api/contiguous.cpp 中,原三参数 ViewCopy 改为调用 ViewCopy(x, y, executor, false),确保既有调用方行为不变。
就地地址重合时按 inplaceFlag 决定缓存处理: 新增四参数实现中,当 x 与 y 指向同一数据地址时,仅在 !inplaceFlag 条件下执行 executor->AbandonCache(true),原地模式下不再放弃缓存。
日志补充原地标志信息: 同一分支的 OP_LOGD 调整为输出 inplace flag 取值,便于区分两种模式下的执行路径。

3.2.3 kernel侧设计

不涉及

3.3 支持硬件

纯host侧代码,不涉及硬件型号。

3.4 算子约束限制

💡 备注(选填)

likedislike
Rren-botaoCollaborators
6 days ago Added label: requirement
Rren-botaoCollaborators
6 days ago Assign ren-botao as responsible person
ren-botaoCollaborators
6 days ago Comments:

/assign @renbotao

likedislike
CANN-robot
CANN-robotCollaborators
6 days ago Comments:

Notice

This issue can not be assigned to renbotao. Please try to assign to the repository members.

likedislike
CANN-robotCANN-robotCollaborators
5 days ago Close issue
CANN-robotCANN-robotCollaborators
5 days ago Added label: resolved
ren-botaoCollaborators
5 days ago Comments:
likedislike