Есть много хороших реализаций, чтобы выбрать из:
- Intel MKL, вероятно, лучше всего на машинах Intel. Это не бесплатно, так что это может быть проблемой.
- По их benchmark, OpenBLAS сравнивает очень хорошо с Intel MKL и свободно
- Eigen также вариант и имеет довольно большой (хотя и старый) benchmark показывает хорошую производительность на небольших матриц (хотя технически это не капля в библиотека BLAS)
- ATLAS, OSKI, POSKI примеры автонастройка ядер, которые будут претендовать на работу на многих архитектурах
Вообще, это довольно трудно выбрать один из них без бенчмаркинга BECA использование:
- некоторые реализации лучше работают на разных типах матриц. Например Эйген лучше работает на матрицах с малым рангом (100s)
- некоторые из них оптимизированы для конкретных архитектур (например, от Intel)
- в некоторых случаях многопоточной библиотеки BLAS может конфликтовать с многопоточным приложением (например, OpenBLAS)
- Показатели разработчика могут иметь тенденцию подчеркивать случаи, которые лучше работают на их реализацию.
Я бы предложил выбрать одну или две из этих библиотек, которые применяются для вашего случая использования, и сравнить их для вашего конкретного приложения на вашей конкретной (или аналогичной) машине. Это довольно легко сделать even after compiling your code.
например, библиотека Atlas, OpenBlas, Intel MKL – ztik
@ctheo Большое спасибо – user15964
@ctheo и как они сравниваются со стандартным Lapack и Blas? Они изменили исходный код? Будут ли они менее надежными, чем стандартный Lapack и Blas? – user15964