Closed
[Requirement|需求建议]: 新增带inplaceFlag参数的ViewCopy重载接口以支持inplace类viewcopy接口支持aclnn缓存 #4461
ren-botaoAdd on 6 days agoClosed at 5 days ago
CANN-robot
6 days ago Comments:
6 days ago Comments:
5 days ago Close issue
5 days ago Added label: resolved
ren-botao
5 days ago Comments:
5 days ago Comments:


一、背景信息 (必填)
原 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 算子约束限制
💡 备注(选填)