首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

性能比拼!超详细的Tengine GEMM矩阵乘法汇编教程

Step2: 调用OpenBLAS的gemm OpenBLAS[2]是一个开源的基础线性代数计算库,BLAS的英文全称Basic Linear Algebra Subprograms,它在不同的处理器上都做了优化.../test 在RK3399上得到的结果是 [m n k]: 256 128 256 [openblas]: 4.68 ms [pure c]: 32.22 ms [blas...Step3:调用Tengine 16x4 kernel的gemm 这部分教程以 Tengine[3]源码中的 sgemm_4x16_interleave.S[4]为例子,对汇编代码做了一些简化,只支持k...n k]: 256 256 256 [tengine 4x16]: 7.71 ms [openblas]: 9.55 ms [pure c]: 316.00 ms [blas...这个教程的代码只是一个示例,part3的代码只支持: m 是16的倍数 n 是4的倍数 k 是4的倍数 看完这个教程,建议可以尝试以下的一些拓展工作: 你可以修改代码来支持任意数值的k,可参考[sgemm

1.7K10

Im2Col+GEMM的改进方法MEC,一种更加高效的卷积计算策略

前言 前面介绍了Im2Col+GEMM来实现卷积以在某些条件下获得更好的访存和计算效率,详见:详解Im2Col+Pack+Sgemm策略更好的优化卷积运算 。...但是,在实际操作中,子矩阵的数量对性能的影响是很大的,在Solution1中执行了 次gemm,而Solution2中执行了 次gemm,如果使用Blas矩阵计算库,那么这两种方法在特定硬件平台如GPU...这里只是将这个二维矩阵存成了一个数组,来方便后面调用cblas_sgemm接口,关于OpenBlas的介绍以及计算方式,函数接口可以查看参考中的资料2,这里就不过多介绍了。...函数接口即可完成卷积层的计算,这个地方加入了计时函数,统计Im2Col+gemm的运行时间: // 使用Blas库实现矩阵乘法 float *output = new float[kernel_num...inHeight * kernel_w]; im2col_mec(src, inHeight, inWidth, kernel_h, kernel_w, srcIm2col); // 使用Blas

2.1K41
领券