CANN/asc-devkit Conv3D Tiling结构体
TConv3DApiTiling结构体【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitTConv3DApiTiling结构体包含Conv3D算子规格信息及Tiling切分算法的相关参数被传递给Conv3D Kernel侧用于数据切分、数据搬运和计算等。TConv3DApiTiling结构体的参数说明见表1。用户通过调用GetTiling接口获取TConv3DApiTiling结构体具体流程请参考Conv3D Tiling使用说明。当前暂不支持用户自定义配置TConv3DApiTiling结构体中的参数。表1TConv3DApiTiling结构说明| 参数名称 | 数据类型 | 说明 | | --- | --- | --- | | groups | uint32_t | 预留参数当前仅支持为1。 | | singleCoreDo | uint64_t | 单核上处理的Dout大小。 | | singleCoreCo | uint32_t | 单核上处理的Cout大小。 | | singleCoreM | uint64_t | 单核上处理的M大小。 | | orgDo | uint64_t | Conv3D计算中原始Dout大小。 | | orgCo | uint32_t | Conv3D计算中原始Cout大小。 | | orgHo | uint64_t | Conv3D计算中原始Hout大小。 | | orgWo | uint64_t | Conv3D计算中原始Wout大小。 | | orgCi | uint32_t | Conv3D计算中原始Cin大小。 | | orgDi | uint64_t | Conv3D计算中原始Din大小。 | | orgHi | uint64_t | Conv3D计算中原始Hin大小。 | | orgWi | uint64_t | Conv3D计算中原始Win大小。 | | kernelD | uint32_t | Conv3D计算中卷积核原始kernel D维度大小。 | | kernelH | uint32_t | Conv3D计算中卷积核原始kernel H维度大小。 | | kernelW | uint32_t | Conv3D计算中卷积核原始kernel W维度大小。 | | strideD | uint32_t | Conv3D计算中Stride D维度大小。 | | strideH | uint32_t | Conv3D计算中Stride H维度大小。 | | strideW | uint32_t | Conv3D计算中Stride W维度大小。 | | dilationD | uint32_t | Conv3D计算中Dilation D维度大小。 | | dilationH | uint32_t | Conv3D计算中Dilation H维度大小。 | | dilationW | uint32_t | Conv3D计算中Dilation W维度大小。 | | padHead | uint32_t | Conv3D计算中Padding D维度Head方向大小。 | | padTail | uint32_t | Conv3D计算中Padding D维度Tail方向大小。 | | padUp | uint32_t | Conv3D计算中Padding H维度Up方向大小。 | | padDown | uint32_t | Conv3D计算中Padding H维度Down方向大小。 | | padLeft | uint32_t | Conv3D计算中Padding W维度Left方向大小。 | | padRight | uint32_t | Conv3D计算中Padding W维度Right方向大小。 | | mL0 | uint32_t | L0上单次处理的M大小。 | | kL0 | uint32_t | L0上单次处理的K大小。 | | nL0 | uint32_t | L0上单次处理的N大小。 | | kAL1 | uint32_t | L1上Input K的实际大小等于Cin1InL1 * KH * KW * C0Cin1InL1是KD * Cin1合轴之后Tiling切分的大小。 | | kBL1 | uint32_t | L1上Weight K的实际大小等于Cin1InL1 * KH * KW * C0Cin1InL1是KD * Cin1合轴之后Tiling切分的大小。 | | nBL1 | uint32_t | L1上Weight载入Cout维度的实际数据大小。 | | mAL1 | uint32_t | L1上Input载入M的实际数据大小。 | | al1FullLoad | uint8_t | Input数据在L1 Buffer是否全载。0Input数据在L1 Buffer上不全载。1Input数据在L1 Buffer上全载。 | | bl1FullLoad | uint8_t | Weight数据在L1 Buffer是否全载。0Weight数据在L1 Buffer上不全载。1Weight数据在L1 Buffer上全载。 | | iterateMNOrder | uint8_t | 输出结果矩阵Output时M轴和N轴的输出顺序。0优先输出M方向。先输出M方向再输出N方向请见图2。1优先输出N方向。先输出N方向再输出M方向请见图3。M由Hout和Wout组成M方向的输出顺序为先输出Wout方向再输出Hout方向。 | | biasFullLoadFlag | uint8_t | Bias是否全载进L1 Buffer。0否单核内单次载入Bias大小等于单次矩阵乘N方向的大小nL0。1是单核内的Bias一次全载。 |注上述的M轴为卷积正向操作过程中的输入Input在img2col展开后的纵轴数值上等于Hout * WoutK为输入Input在img2col展开后的横轴数值上等于KD*C1*KH*KW*C0KD/KH/KW为Weight的Depth、Height、Width即kernelD/kernelH/kernelW的简写N为Weight的Cout具体请见图1。图1卷积3D正向MKN示意图图2卷积3D正向MFirst示意图图3卷积3D正向NFirst示意图【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考