我使用一个线程并使用8个线程对Eigen SGEMM操作进行基准测试,我得到的是性能达到峰值512x512,但是当超出该大小时,性能下降。我想知道是否有任何具体原因可能是更大矩阵的复杂性?我查看了Eigen网站上的基准矩阵运算基准,但没有看到类似的东西。
在512x512时,我的并行速度提高了4倍。但在4096x4096中,我的速度提高了不到2倍。我使用openMP进行并行操作并将其缩减到一个线程,我将num_of_threads设置为两个。
答案 0 :(得分:2)
您的结果表明此算法主要是在大矩阵大小下绑定的内存带宽。 4Kx4K矩阵(浮点?)超过了凡人可用的任何CPU的缓存大小,而512x512可以轻松适应大多数现代CPU的L3缓存。
答案 1 :(得分:-1)
我使用包括Eigen在内的几种BLAS实现对矩阵乘法进行了一些测试。我发布了结果here。您可能会发现它很有用。