Date Редакция Категория sci Теги C++

Их много. После нескольких проб, решил использовать Armadillo.

Преимущества:

  1. быстрая (на их сайте есть сравнения, да и сам попробовал);
  2. наличие всего, что мне нужно. Например, есть матрицы-строки и столбцы, а не просто векторы; строки и столбцы наследуются от матриц;
  3. код — я так не умею! (в некоторые другие лазил — так я умею).

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