Intel MKL против AMD Math Core Library
Есть ли у кого-нибудь опыт программирования для Intel Math Kernel Library и AMD Math Core Library? Я строю персональный компьютер для высокопроизводительных статистических вычислений и обсуждаю компоненты, которые вы покупаете. Привлекательность библиотеки AMD Math Core заключается в том, что она бесплатна, но я в академии, поэтому MKL не так дорого. Но мне было бы интересно услышать мысли о:
- Что обеспечивает лучший API?
- Это обеспечивает лучшую производительность в среднем за доллар, включая расходы на лицензирование и аппаратное обеспечение.
- Является ли AMCL-GPU фактором, который я должен рассмотреть?
Ответы
Ответ 1
Intel MKL и ACML имеют аналогичные API, но MKL имеет более богатый набор поддерживаемых функций, включая BLAS (и CBLAS)/LAPACK/FFTs/Vector и статистические математические/разреженные прямые и итеративные решатели/разреженные 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 Compilers, так и Intel Math Library - даже в системе AMD - поэтому они были использованы в качестве основы наших тестов". [Тесты производительности показали 4-ядерный Nehalem X5550 2.66GHz при 74.0GFs против Стамбула 2435 2.6GHz при 99.4GFs; Стамбул только на 34% быстрее, несмотря на то, что на 50% больше ядер]
Надеюсь, что это поможет.
Ответ 2
На самом деле в ACML есть две версии подпрограмм LAPACK. Те, у кого нет завершающего подчеркивания (_), являются подпрограммами C-версии, которые, как сказал Виктор, не требуют массивов рабочих пространств, и вы можете просто передавать значения вместо ссылок для параметров. Тем не менее, с подчеркиванием - это просто ванильные подпрограммы Fortran. Сделайте "dumpbin/exports" на libacml_dll.dll, и вы увидите.
Ответ 3
Я использовал AMCL для своих процедур BLAS/LAPACK, поэтому это, вероятно, не ответит на ваш вопрос, но я надеюсь, что это будет полезно для кого-то. Сравнивая их с ванильным BLAS/LAPACK, их производительность была в 2-3 раза лучше в моем конкретном случае использования. Я использовал его для плотных несимметричных комплексных матриц как для линейных решеток, так и для вычислений собственной системы. Вы должны знать, что объявления функций не идентичны процедурам ванили. Для этого потребовалось значительное количество макросов препроцессора, чтобы я мог свободно переключаться между ними. В частности, все процедуры LAPACK в AMCL не требуют рабочих массивов. Это основное удобство, если AMCL является единственной библиотекой, которую вы будете использовать.