Что такое Armadillo+Atlas, Armadillo+OpenBLAS, Armadillo+uBLAS, Armadillo+MKL?

На многих сайтах говорят про Armadillo+что-то еще. Что они имеют в виду?

Я использую библиотеку Armadillo в виде

#include <armadillo>

в среде Linux.

На этом сайте

http://nghiaho.com/?p=1726

Armadillo+OpenBLAS упоминается. Что они имеют в виду? Как использовать Armadillo+OpenBLAS?


ОБНОВЛЕНИЕ

Сейчас прошло больше года. Я просто добавляю, что Armadillo является оболочкой для таких реализаций, как BLAS или OpenBLAS. Это не реализация матричной операции.


person ar2015    schedule 07.04.2015    source источник


Ответы (4)


Вместо связывания кода на основе Armadillo с BLAS вы связываетесь с OpenBLAS. Это можно сделать вручную, или установщик Armadillo может определить наличие OpenBLAS. Подробнее см. FAQ.

По сути, вам нужно сначала установить OpenBLAS, а затем установить Armadillo (не из репозитория Linux, а загруженного). версия).

person mtall    schedule 07.04.2015

Armadillo может выполнять свои собственные расчеты или вызывать сторонние библиотеки для выполнения расчетов. Atlas, BLAS, OpenBLAS, uBLAS, lapack, MKL являются примерами таких сторонних библиотек. Если Armadillo сделает свою собственную математику, это будет один поток. Некоторые из этих сторонних библиотек могут выполнять многопоточность, например OpenBLAS. Некоторые библиотеки могут использовать GPU, например, nvBLAS от Nvidia. Обратите внимание, что nvBLAS выполняет только частичную реализацию blas, и вам все еще нужна другая библиотека blas для того, что nvBLAS не делает.

Вы можете управлять Armadillo, редактируя armadillo_bits/config.hpp или используя параметр компилятора -D, чтобы установить соответствующие директивы прекомпилятора для ваших нужд.

Кое-что, что может сэкономить ваше время: порядок, в котором вы связываете броненосец и сторонние библиотеки, важен. Armadillo звонит, чтобы сказать lapack, а lapack зовет blas, поэтому порядок должен быть таким:

-larmadillo -llapack -lblas иначе будут ошибки ссылок.

person allanbcampbell    schedule 14.10.2015

Будьте осторожны с версией OpenBLAS, т.е. вам следует установить версию 0.2.14. В противном случае у вас будут проблемы, если вы захотите использовать многопоточность.

So:

1 - удалить все, что у вас уже установлено (Armadillo или openBLAS). 2 - Установите openBLAS ver 0.2.14 3 - Установите Armadillo (если вы используете репозиторий, вероятно, у вас не будет доступа к последней версии). 4 - Наслаждайтесь!

person nunodsousa    schedule 28.08.2015

Кроме того, вы должны использовать ключ -lopenblas вместо -lblas. Также необходимо добавить пути к папкам (include, lib) в пакете openblas (заранее скачанном и сделанном). По моему опыту, порядок и количество установленных пакетов не имеют значения. Я экспериментировал с разными версиями пакетов openblas без переустановки armadillo.

person Alexander Korovin    schedule 18.08.2016
comment
Извини. Вы правы, должно быть -lopenblas. Я починил это. - person Alexander Korovin; 19.08.2016