Собственная параллельная производительность падает, когда матрица превышает 512x512

Я проверил работу Eigen SGEMM с использованием одного потока и с использованием 8 потоков, и я получил, что производительность достигла пика при разрешении 512x512, но затем упала при превышении этого размера. Мне было интересно, есть ли для этого какая-то конкретная причина, возможно, что-то связанное со сложностью большей матрицы? Я посмотрел бенчмарк на сайте Eigen для матрично-матричных операций, но ничего похожего не увидел.

При разрешении 512x512 параллельно я стал в 4 раза быстрее. Но в разрешении 4096x4096 я стал едва ли в 2 раза быстрее. Я использую openMP для параллелизма, и чтобы сократить его до одного потока, я установил num_of_threads равным двум.


person Cisum Inas    schedule 10.05.2012    source источник


Ответы (2)


Ваши результаты показывают, что этот алгоритм в первую очередь связан с пропускной способностью памяти при большом размере матрицы. Матрица 4Kx4K (с плавающей запятой?) превосходит размер кеша любого CPU, доступного простым смертным, а 512x512 вполне уместится в кеше L3 на большинстве современных CPU.

person Paul Jurczak    schedule 09.11.2012

Я провел несколько тестов на умножение матриц, используя несколько реализаций BLAS, включая Eigen. Я разместил результаты здесь. Вы можете найти это полезным.

person Siddharth Gopal    schedule 25.06.2013