Интел МКЛ и математические библиотеки ядра АМД


Есть ли у кого-нибудь опыт программирования как для Intel Math Kernel Library, так и для AMD Math Core Library? Я создаю персональный компьютер для высокопроизводительных статистических вычислений и обсуждаю компоненты, которые нужно купить. Привлекательность библиотеки AMD Math Core заключается в том, что она бесплатна, но я нахожусь в академии, поэтому MKL не так уж и дорог. Но мне было бы интересно услышать мысли о:

  1. что обеспечивает лучший API?
  2. который обеспечивает более высокая производительность, в среднем, на доллар, включая затраты на лицензирование и аппаратное обеспечение.
  3. является лиAMCL-GPU фактором, который я должен учитывать?
3 22

3 ответа:

Intel MKL и ACML имеют схожие API, но MKL имеет более богатый набор поддерживаемых функций, включая BLAS (и CBLAS)/LAPACK/FFS/Vector и Statistical Math/Sparse direct and iterative solvers/Sparse BLAS и так далее. Intel MKL также оптимизирован для процессоров Intel и AMD и имеет активный форум пользователей, к которому вы можете обратиться за помощью или руководством. Независимая оценка двух библиотек размещена здесь: (http://www.advancedclustering.com/company-blog/high-performance-linpack-on-xeon-5500-v-opteron-2400.html)

Шейн Кордер, Advanced Clustering, (также принадлежит HPCWire: Benchmark Challenge: Nehalem Versus Istanbul): "в ходе нашего недавнего тестирования и благодаря опыту реального мира мы обнаружили, что компиляторы Intel и библиотека ядра Intel Math (MKL) обычно обеспечивают лучшую производительность. Вместо того, чтобы просто остановиться на инструментарии Intel, мы попробовали различные компиляторы, включая: Intel, компиляторы GNU и Portland Group. Мы также протестировали различные библиотеки линейной алгебры, включая MKL, AMD Core Math Library (ACML) и libGOTO из Техасского университета. Все тесты показали, что мы можем достичь наивысшей производительности при использовании как компиляторов Intel, так и библиотеки Intel Math Library-даже в системе AMD-поэтому они были использованы в качестве основы для наших тестов."[Тестирование бенчмарка показало 4-ядерный Nehalem X5550 2,66 ГГц при 74,0 GFs против Istanbul 2435 2,6 ГГц при 99,4 GFs; Стамбул только на 34% быстрее, несмотря на 50% больше ядер]

Надеюсь, это поможет.

На самом деле, существуют две версии процедур LAPACK в ACML. Те, которые не заканчиваются подчеркиванием ( _ ), являются подпрограммами C-версии, которые, как сказал Виктор, не требуют массивов рабочей области, и вы можете просто передавать значения вместо ссылок для параметров. Те, однако, подчеркнуть только ваниль Фортране подпрограммы. Сделайте "dumpbin / exports" на libacml_dll.- а там видно будет.

Я использовал AMCL для его процедур BLAS / LAPACK, поэтому это, вероятно, не ответит на ваш вопрос, но я надеюсь, что это полезно для кого-то. Сравнивая их с vanilla BLAS/LAPACK, их производительность была в 2-3 раза лучше в моем конкретном случае использования. Я использовал его для плотных несимметричных комплексных матриц, как для линейных решений, так и для собственных вычислений. Вы должны знать, что объявления функций Не идентичны подпрограммам vanilla. Для этого требовалось значительное количество макросы препроцессора позволяют мне свободно переключаться между ними. В частности, все процедуры LAPACK в AMCL не требуют рабочих массивов. Это очень удобно, если AMCL-единственная библиотека, которую вы будете использовать.