Intel MKL против AMD Math Core Library

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

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

3 ответов


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

• Shane Corder, Advanced Clustering, (также осуществляется HPCWire: Benchmark Challenge: Nehalem Versus Istanbul): "в нашем недавнем тестировании и в реальном мире мы обнаружили, что компиляторы Intel и Intel Math Kernel Library (MKL) обычно обеспечивают лучшую производительность. Вместо того, чтобы просто остановиться на инструментарии Intel, мы попробовали различные компиляторы в том числе: Intel, компиляторы GNU и Portland Group. Мы также протестировали различные библиотеки линейной алгебры, включая: MKL, AMD Core Math Library (ACML) и libGOTO из Техасского университета. Все тесты показали, что мы можем достичь наивысшей производительности при использовании как компиляторов Intel, так и математической библиотеки Intel-даже в системе AMD-поэтому они были использованы в качестве основы наших тестов."[Тестовое тестирование показало 4-core Nehalem X5550 2.66 GHz at 74.0 GFs против Istanbul 2435 2.6 GHz at 99.4 GFs; Стамбул только на 34% быстрее, несмотря на 50% больше ядер]

надеюсь, что это помогает.


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


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