Различия в производительности между ATLAS и MKL?

31

ATLAS - это бесплатная замена BLAS / LAPACK, которая настраивается на машину при компиляции. MKL - коммерческая библиотека, поставляемая Intel. Сравнимы ли эти две библиотеки с точки зрения производительности или MKL имеет преимущество в некоторых задачах? Если да, то какие?

Стефано Борини
источник
4
Теперь есть и OpenBLAS . Смотрите тест против MKL на Sandybridge .
Марк Микофски

Ответы:

18

MKL (от Intel) оптимизирован для процессоров Intel и, вероятно, во многих случаях имеет преимущество. Но он также «знаменит» тем, что выбирает «худшие» пути кода для процессоров AMD, как описано здесь .

Томми
источник
13

BLAS не монолитный. BLAS1 и BLAS2 имеют ограниченную пропускную способность памяти, и вы ничего не можете сделать, чтобы ускорить их за пределами очевидного (развертывание цикла, блокировка кэша для уровня 2). BLAS3 более интересен, и в качестве прототипа здесь используется умножение матрицы на матрицу. Насколько мне известно, GOTOBlas всегда был явным победителем, посмотрите, например, это сравнение или это и это обоснование .

Прошло много лет, и у нас есть проект BLIS . Это лучшая бесплатная альтернатива MKL.

Мэтт Кнепли
источник
4
Мэтт прав, но GotoBLAS больше не разрабатывается. Он все еще работает довольно хорошо для некоторых современных процессоров, но MKL наверняка превзойдет его для DGEMM на будущих процессорах, если это еще не сделано. Например, мы не тестировали его на Westmere, но я не удивлюсь, если GotoBLAS уже проиграл.
Билл Барт
2
Доктор Гото был куплен M $. Грусть , ,
Meawoppl
2
OpenBLAS - это проект с открытым исходным кодом, созданный GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior
Goto работает на MKL сейчас. Больше нет грусти :-)
Джефф
6

Профиль, не спекулируйте! (также работает как «Тест, не спекулируйте!» )

Нет ничего общего, что можно сказать, это во многом зависит от задач, которые вы хотите выполнить (например, BLAS 1/2/3) и от аппаратного обеспечения, на котором вы работаете (очевидно, Intel MKL не работает на процессорах ARM, для пример, но даже среди процессоров Intel, вы можете ожидать различия в производительности).


Стоит отметить, что AMD также предлагает математические библиотеки, настроенные на их процессоры, AMD Core Math Library . Он не такой многофункциональный, как Intel MKL, но включает BLAS.

F'x
источник
Правда. Есть много неподтвержденных данных (и фактического профилирования), чтобы поддержать другие ответы здесь (как подтверждается ссылками). Тем не менее, ваш пробег может варьироваться, и это всегда помогает профилировать, чтобы знать, что вы правы.
Джефф Оксберри
1
Это раздражает, хотя, поскольку MKL составляет 499 $. Однако они предлагают 1-месячную пробную версию
Линдон Уайт
@LyndonWhite это все еще так? Страница загрузки, кажется, показывает, что это бесплатно
Luciano
Да, я считаю, что теперь это бесплатно, я вижу, что многие люди используют его сейчас.
Линдон Уайт
6

Предыдущие ответы на этот вопрос охватывали большинство существенных моментов, но я хочу добавить один комментарий по этому поводу:

MKL имеет преимущество для некоторых задач?

Команда MKL имеет уникальную возможность узнать о будущих наборах команд Intel и их реализации в конкретных процессорах. Кроме того, они имеют доступ к проприетарным имитаторам процессоров и опытному оборудованию, которое никто за пределами Intel не может использовать. Таким образом, MKL имеет преимущество в отношении степени знаний о будущих продуктах и ​​когда они получают эти знания. Таким образом, не должно быть слишком удивительно, если они производят лучшие реализации BLAS, чем кто-либо еще, по крайней мере на ранних этапах жизненного цикла продукта с новыми функциями.

С другой стороны, Intel довольно открыто рассказала о наборе инструкций AVX-512 и предоставила эмулятор разработки программного обеспечения Intel® (SDE), который позволяет разработчикам эмулировать инструкции AVX-512 для процессоров, которые не поддерживают их изначально. По этой причине неудивительно, что высококачественные реализации BLAS с открытым исходным кодом доступны для процессоров Intel, которые поддерживают AVX-512 на ранних этапах существования этих продуктов.

Конечно, то, насколько важно иметь детальную информацию о конкретном процессоре по сравнению с основами алгоритмов плотной линейной алгебры, не полностью решено. Следующая цитата решает эту проблему лучше, чем я:

В теории нет разницы между теорией и практикой. Но на практике есть.

Полное раскрытие: я работаю на Intel.

Джефф
источник
Есть ли шанс, что MKL с открытым исходным кодом?
Рой
С какой целью? МКЛ уже свободен как в пиве. Чтение исходного кода BLIS имеет гораздо большую образовательную ценность. Если вы хотите прочитать сборку, попробуйте OpenBLAS.
Джефф
1

Я думаю, что основным отличием между библиотеками BLAS вендора и библиотеками BLAS с открытым исходным кодом является время, необходимое для того, чтобы open source поддерживал новейшие аппаратные функции.

Поскольку BLAS широко используется, вендор заинтересован в поддержке новейших аппаратных функций. Например, рассмотрим векторные расширения Intel AVX, которые были представлены с процессором «sandy-bridge» в январе 2011 года. У MKL была поддержка AVX еще до того, как процессор был доступен, но только недавно ATLAS (конец 2011 года) начала развертывать поддержку AVX. ,

Кроме того, если вашему приложению действительно нужна производительность, и перед тем, как вы начнете сравнивать различные библиотеки BLAS или начнете заниматься оптимизацией чего-либо: профилируйте свое приложение. Распространено, что человеческая интуиция не является очень эффективным предиктором профилировщика, по крайней мере, я знаю, что моя нет! Поэтому вместо того, чтобы тратить время на случайную оптимизацию, профилируйте свое приложение и систематически подходите к каждому узкому месту.

fcruz
источник