首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BLAS: gemm与gemv

BLAS: gemm与gemv
EN

Stack Overflow用户
提问于 2011-08-16 00:19:50
回答 3查看 10.6K关注 0票数 24

为什么BLAS有一个用于矩阵-矩阵乘法的gemm函数和一个用于矩阵-向量乘法的单独的gemv函数?矩阵-向量乘法不只是矩阵-矩阵乘法的特例,其中一个矩阵只有一行/列吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-16 00:44:33

从数学上讲,矩阵-向量乘法是矩阵-矩阵乘法的特例,但在软件库中实现的情况并不一定如此。

它们支持不同的选项。例如,gemv支持对它正在操作的向量的跨步访问,而gemm不支持跨步矩阵布局。在C语言绑定中,gemm要求您指定所有三个矩阵的存储顺序,而在gemv中,这对于向量参数是不必要的,因为这是没有意义的。

除了支持不同的选项外,还有一系列可能在gemm上执行的不适用于gemv的优化。如果你知道你正在做一个矩阵向量乘积,你不想让库在切换到针对这种情况而优化的代码路径之前浪费时间去弄清楚这种情况;你更愿意直接调用它。

票数 14
EN

Stack Overflow用户

发布于 2014-12-01 20:04:37

当您优化gemv和gemm时,会应用不同的技术:

  • 用于矩阵-矩阵运算,您使用的是分块算法。块大小取决于高速缓存的大小。
  • 用于优化您使用的所谓融合的一级运算(例如融合的点积或融合的轴)的矩阵向量乘积。

如果你想知道更多细节,请告诉我。

票数 4
EN

Stack Overflow用户

发布于 2011-08-16 00:38:37

我认为它的1级(向量-向量)、2级(矩阵-向量)和3级(矩阵-矩阵)例程更适合BLAS层次结构。如果你知道它只是一个向量,它可能会优化得更好一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7067600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档