no5-aaron-wu / no5-aaron-wu.github.io

aaron-wu的个人博客
0 stars 0 forks source link

AI算法基础 [7]:MNN中的Strassen实现 | 旭穹の陋室 #12

Open no5-aaron-wu opened 2 years ago

no5-aaron-wu commented 2 years ago

https://no5-aaron-wu.github.io/2021/11/18/AI-Algorithm-7-StrassenInMnn/

前言 主要针对CPU后端,基于/source/backend/cpu/compute/Convolution1x1Strassen.cpp源码展开。 以输入大小:1 x 8 x 224 x 224(C4 Pack为1 x 2 x 224 x 224 (x 4)),权重大小: 16 x 8 x 1 x 1(MNN中将其变换为1 x 4 x 8 (x 4),即对输出通道(卷积核个数)进行C4 Pac

DzAvril commented 2 years ago

博主,重排矩阵A下面的示意图中,24个c4Pack为什么用6中不同的颜色区分?重排之后的24x4的矩阵也是6种颜色区分开,我的理解应该是有4个通道,24x4中的第一个6x4是同一个颜色,代表的是同在通道0的数据,第二个6x4是同一个颜色,代表通道1,以此类推。不知道是我理解错了吗?

DzAvril commented 2 years ago

包括下面的矩阵乘中,c0 ~ c7的24个cpack也是六种颜色区分开。我的理解是同一个通道1种颜色

no5-aaron-wu commented 2 years ago

@DzAvril 博主,重排矩阵A下面的示意图中,24个c4Pack为什么用6中不同的颜色区分?重排之后的24x4的矩阵也是6种颜色区分开,我的理解应该是有4个通道,24x4中的第一个6x4是同一个颜色,代表的是同在通道0的数据,第二个6x4是同一个颜色,代表通道1,以此类推。不知道是我理解错了吗?

时间有点久了,回忆了一下,当时这样表示是想表达重排后数据与重拍前的对应关系,4个一组颜色是因为MNN源码中是以4个为一组进行转置的

no5-aaron-wu commented 2 years ago

@DzAvril 博主,重排矩阵A下面的示意图中,24个c4Pack为什么用6中不同的颜色区分?重排之后的24x4的矩阵也是6种颜色区分开,我的理解应该是有4个通道,24x4中的第一个6x4是同一个颜色,代表的是同在通道0的数据,第二个6x4是同一个颜色,代表通道1,以此类推。不知道是我理解错了吗?

https://github.com/alibaba/MNN/blob/b9bfa2342f3b84fc141c65e8c058e496bbe9a885/source/backend/cpu/x86_x64/avx/GemmCommon.cpp#L185

DzAvril commented 2 years ago

@no5-aaron-wu

@DzAvril 博主,重排矩阵A下面的示意图中,24个c4Pack为什么用6中不同的颜色区分?重排之后的24x4的矩阵也是6种颜色区分开,我的理解应该是有4个通道,24x4中的第一个6x4是同一个颜色,代表的是同在通道0的数据,第二个6x4是同一个颜色,代表通道1,以此类推。不知道是我理解错了吗?

时间有点久了,回忆了一下,当时这样表示是想表达重排后数据与重拍前的对应关系,4个一组颜色是因为MNN源码中是以4个为一组进行转置的

了解了,那我的理解应该也是对的吧?

no5-aaron-wu commented 2 years ago

@DzAvril

@no5-aaron-wu

@DzAvril 博主,重排矩阵A下面的示意图中,24个c4Pack为什么用6中不同的颜色区分?重排之后的24x4的矩阵也是6种颜色区分开,我的理解应该是有4个通道,24x4中的第一个6x4是同一个颜色,代表的是同在通道0的数据,第二个6x4是同一个颜色,代表通道1,以此类推。不知道是我理解错了吗?

时间有点久了,回忆了一下,当时这样表示是想表达重排后数据与重拍前的对应关系,4个一组颜色是因为MNN源码中是以4个为一组进行转置的

了解了,那我的理解应该也是对的吧?

对的