Их много. После нескольких проб, решил использовать Armadillo.
Преимущества:
- быстрая (на их сайте есть сравнения, да и сам попробовал);
- наличие всего, что мне нужно. Например, есть матрицы-строки и столбцы, а не просто векторы; строки и столбцы наследуются от матриц;
- код — я так не умею! (в некоторые другие лазил — так я умею).
Armadillo независима от других библиотек, однако для ускорения некоторых вычислений можно установить BLAS и/или LAPACK. Для этого в Xubuntu устанавливаются пакеты.
libblas3gf BLAS
libblas-doc
libblas-dev
liblapack3gf LAPACK
liblapack-doc
liblapack-dev
остальные пакеты подхватываются автоматически.
Итак, BLAS и LAPACK установлены, но даже в этом случае при линковке выскакивают сообщения вроде
undefined reference to `wrapper_dgels_'
Добавление опций -llapack
и -lblas
ситуации не изменило. Оказывается, вместо этих опций нужно добавить одну: -larmadillo
— и всё заработает. В Code::Blocks это делается через Project/Build options/Linker Settings/Other Linker Options.
По умолчанию Armadillo настроена использовать BLAS и LAPACK. Это можно изменить, закомментировав строки ARMA_USE_LAPACK
/ARMA_USE_BLAS
в конфигурационном файле /usr/include/armadillo-bits/config.hpp.
Комментарии
comments powered by Disqus