2015-04-07 2 views
2

На многих сайтах они говорят о Armadillo + что-то еще. Что они имеют в виду?Что такое Armadillo + Atlas, Armadillo + OpenBLAS, Armadillo + uBLAS, Armadillo + MKL?

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

#include <armadillo> 

в среде Linux.

На этом сайте

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

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


UPDATE

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

ответ

3

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

В принципе, вам необходимо сначала установить OpenBLAS, а затем установить Armadillo (не из репозитория Linux, а в версию downloaded).

1

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

Итак:

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

2

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

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

Что-то, что может сэкономить вам время: порядок, который вы связываете с армадильо и сторонними библиотеками, важен. Армадилло звонит, чтобы заявить, что лакеры и лацканы звонки на блас, поэтому порядок должен быть:

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

0

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

+1

'-fopenblas' или' -lopenblas'? – ar2015

+0

Извините. Вы правы, должны быть '-lopenblas'. Я починил это. –

Смежные вопросы