Closed
[Requirement|需求建议]: split/split_v/unpack 小 shape 场景头开销优化 #4568
zhanglei842Add on 9 days agoClosed at 2 days ago
9 days ago Added label: requirement
9 days ago Associated pull request
2 days ago Close issue
2 days ago changed custom state from 进行中 to 已完成
2 days ago Added label: resolved
一、背景信息(必填)
split/split_v/unpack(conversion 域,arch35)在小 shape 场景下,算子执行时间中 kernel 头开销占比过高:
SplitVTilingData(含MAX_CORE_COUNT=72的nBlockSplitOffset/nBlockSplitOffsetEnd/nBlockSplitPrefixStart/nBlockSplitPrefixEnd等数组字段),kernel 入口GET_TILING_DATA需整体反序列化,小 shape 模板实际只访问其中少数字段;TPipe并向模板注入TPipe& pipe_、TQueBind成员,小 shape 纯搬运/UB 内切分路径用不到队列机制;split_v_simt_chunk_pre.hinclude 与TILING_KEY_SIMT_CHUNK(204)定义(死代码)。二、价值/作用(必填)
三、设计方案(必填)
3.1 使能方式
Aclnn 直调(Ascend C kernel,
KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY),入口split_v(GM_ADDR x, GM_ADDR sizeSplits, GM_ADDR y, GM_ADDR workspace, GM_ADDR tiling)/split(...)/unpack(...))。3.2 总体设计
3.2.1 算子支持的数据类型
int8 / int16 / int32 / int64(kernel 按
sizeof(DTYPE_X)分支以 uint8/uint16/uint32/uint64 处理);sizeSplits 支持 int32(tiling 数据含isInt32标志)。3.2.2 host 侧设计
split_v_tiling_arch35.h新增按模板裁剪的精简 tiling 结构并注册 tilingKey:SplitVSlimTilingData(纯标量 16 字段)SplitVPureCopyTilingDataSplitVUbSplitTilingDataSplitVScalarTilingData(无数组字段,三模板字段并集)host 侧
SplitVTiling新增FillSlimTilingData()/FillPureCopyTilingData()/FillUbSplitTilingData()/FillScalarTilingData()分别填充对应结构,字段顺序与SplitVTilingData保持一致。3.2.3 kernel 侧设计
split_apt.cpp/split_v_apt.cpp/unpack_apt.cpp)按 tilingKey 用GET_TILING_DATA_WITH_STRUCT反序列化对应精简结构,替换原统一GET_TILING_DATA(SplitVTilingData);TPipe构造/注入(如SplitVPureCopyModeSameLen op(pipe)→SplitVPureCopyModeSameLen op),模板删除TPipe& pipe_、TQueBind成员,改用事件(EVT_ID0/EVT_ID1)驱动的 DataCopy;split_v_pure_copy_same_len.h、split_v_ub_split_same_len.h等)改为从精简 tiling 取数(如ubSize、realCoreNum);split_v_apt.cpp中未使用的split_v_simt_chunk_pre.hinclude 与TILING_KEY_SIMT_CHUNK(204)。3.3 支持硬件
950
3.4 算子约束限制
MAX_CORE_COUNT=72上界不变;SplitVSlimTilingData/SplitVScalarTilingData为纯标量结构(无数组字段),不承载按核偏移数组,按核偏移数组仅保留在 102/103 对应结构中;REGISTER_TILING_DATA_CLASS(Split_111/112/SplitV_111/112, ...))。