【发布时间】:2011-09-30 20:30:17
【问题描述】:
我需要每秒运行 240000 次矩阵向量乘法。矩阵是 5x5 并且始终相同,而向量在每次迭代时都会发生变化。数据类型为float。我正在考虑使用一些 SSE(或类似)指令。
我担心算术运算的数量与所涉及的内存运算的数量相比太少了。您认为我可以得到一些切实的(例如 > 20%)改进吗?
我需要英特尔编译器吗?
您能指出一些参考资料吗?
【问题讨论】:
-
发表评论而不是答案,因为这只是推测,但某些编译器是否优化了各种矩阵乘法运算?我似乎记得一个古老的大学项目,即嵌套 for 循环乘法与线程乘法相比,由于优化,它的运行时间大大加快......
-
如果您写过任何代码,请发帖。多少次是“可怕的”?今天需要多长时间,您想达到什么目标?
-
这也需要在几乎任何 x86 CPU 上工作,或者我们可以假设例如英特尔和 SSSE3 或更高版本?
-
@Alexandre C.:矩阵?复数?问题说“总是一样”。此外,
5*5*sizeof(double)远远小于 L1 缓存的大小。为什么会出现缓存未命中?
标签: c++ vectorization matrix-multiplication sse simd