当矩阵超过 512x512 时,特征并行性能下降



我使用一个线程和 8 个线程对 Eigen SGEMM 操作进行了基准测试,我得到的是性能在 512x512 达到峰值,但在超过该大小时下降。我想知道这是否有任何特定的原因,也许与较大矩阵的复杂性有关?我在 Eigen 的网站上查看了矩阵矩阵运算的基准测试,但没有看到类似的东西。

在 512x512 时,我的并行速度提高了 4 倍。但是在 4096x4096 中,我的速度几乎快了 2 倍。我正在使用 openMP 进行并行性,并将其降低到我num_of_threads设置为两个线程的一个线程。

您的结果表明,此算法主要是在大矩阵大小下受内存带宽限制的。 4Kx4K矩阵(浮点?)超过了凡人可用的任何CPU的缓存大小,而512x512将舒适地适合大多数现代CPU的L3缓存。

我使用包括 Eigen 在内的几种 BLAS 实现对矩阵乘法进行了一些测试。我在这里发布了结果。您可能会发现它很有用。

最新更新