в Ubuntu 20.04, есть много пакетов для OpenBlas.
~$ apt search openblas
p libopenblas-base - Optimized BLAS (linear algebra) library (transitional)
p libopenblas-dev - Optimized BLAS (linear algebra) library (dev, meta)
p libopenblas-openmp-dev - Optimized BLAS (linear algebra) library (dev, openmp)
p libopenblas-pthread-dev - Optimized BLAS (linear algebra) library (dev, pthread)
p libopenblas-serial-dev - Optimized BLAS (linear algebra) library (dev, serial)
i A libopenblas0 - Optimized BLAS (linear algebra) library (meta)
p libopenblas0-openmp - Optimized BLAS (linear algebra) library (shared lib, openmp)
i A libopenblas0-pthread - Optimized BLAS (linear algebra) library (shared lib, pthread)
p libopenblas0-serial - Optimized BLAS (linear algebra) library (shared lib, serial)
p libopenblas64-0 - Optimized BLAS (linear algebra) library (shared lib, 64bit, meta)
p libopenblas64-0-openmp - Optimized BLAS (linear algebra) library (shared lib, 64bit, openmp)
p libopenblas64-0-pthread - Optimized BLAS (linear algebra) library (shared lib, 64bit, pthread)
p libopenblas64-0-serial - Optimized BLAS (linear algebra) library (shared lib, 64bit, serial)
p libopenblas64-dev - Optimized BLAS (linear algebra) library (dev, 64bit, meta)
p libopenblas64-openmp-dev - Optimized BLAS (linear algebra) library (dev, 64bit, openmp)
p libopenblas64-pthread-dev - Optimized BLAS (linear algebra) library (dev, 64bit, pthread)
p libopenblas64-serial-dev - Optimized BLAS (linear algebra) library (dev, 64bit, serial)
Какая из этих пакетов даст бы самые быстрые результаты?
Я намерен делать числовые вычисления (в основном диагонализирующиеся матрицы) в октаве GNU. Мой компьютер имеет процессор Intel Core I3-5005U (в случае, если оптимизированный пакет должен зависеть от типа процессора, пожалуйста, упомяните, какой пакет должен быть предпочтительнее на других типах процессоров).
Я заметил, что есть по меньшей мере 10x скорость улучшения скорости, когда OpenBlas используется вместо BLAS по умолчанию.
Ответ на «Почему?» Вопрос может быть - чтобы получить универсальное решение для многих процессоров и платформ.
Технически все эти двоичные пакеты пришли из того же OpenBlas
исходного пакета .
Если мы говорим о предоставленных вариантах библиотеки для UPDATE-альтернатив , то после sudo apt-get install install "* OpenBlas *"
можно сосчитать 4 группы с 4 вариантами:
$ sudo Update-альтернативы --config libopenblas
libopenblas64.so.0-x86_64-linux-gnu libopenblas64.so-x86_64-linux-gnu libopenblas.so.0-x86_64-linux-gnu libopenblas.so-x86_64-linux-gnu
После установки Pthread устанавливается на версию по умолчанию (0 отбора).
Для базового бенчмаркинга мы можем использовать наши старые MKL-TEST.SH
скрипта для различных альтернатив для библиотек OpenBlas
с использованием Alternalaties Update
.
Ниже приведены результаты для моей I7-3537U, для третьего прогона:
библиотека ALT | Scilab | Julia | Python 3 с Numpy | R | Octave |
---|---|---|---|---|---|
Pthread |
0,31 | 0,76 | 0,31 | 0,39 | 0,31 |
openMP |
0,24 | 0,75 | 0,22 | 0,31 | 0,22 |
Серийный |
0,17 | 0,79 | 0,17 | 0,27 | 0,27 |
0,17 | |||||
ATLAS / Liblapack | 0,31 | 0,75 | 0,32 | 0,52 | 0,32 |
Лапак / liblapack | 0,26 | 0,76 | 0.30 | 0.47 | 0,28 |
LIBMKL_RT (MKL) | 0,16 | 0,76 | 0,16 | 0,22 | 0,16 |
Лучший способ это пробежать официальных тестов , но я не могу понять, как запустить их.