Лицензия
Функциональность Armadillo частично зависит от других библиотек:
Рекомендуется использовать OpenBLAS на всех системах. На macOS для функций BLAS и LAPACK можно использовать фреймворк Accelerate.
Если разрежённые матрицы не нужны, ARPACK и SuperLU не требуются.
Armadillo требует компилятор C++, который поддерживает как минимум стандарт C++11.
В системах на базе Linux установите компилятор GCC C++, доступный в виде готового пакета. Имя пакета может быть g++
или gcc-c++
, в зависимости от вашей системы.
На системах macOS компилятор C++ можно получить, установив Xcode (как минимум версии 8) и затем выполнив следующую команду в окне терминала:
xcode-select --install
В Windows можно использовать набор инструментов MinGW или Visual Studio C++ 2019 (MSVC).
Использование SuperLU имеет следующие ограничения:
Установить Armadillo можно несколькими способами: вручную или через cmake, с правами администратора или без них. Рекомендуется использовать установку на основе cmake.
Инструмент cmake можно загрузить с сайта https://www.cmake.org или (предпочтительно) установить с помощью менеджера пакетов на вашей системе; на системах macOS cmake можно установить через MacPorts или Homebrew.
Перед установкой Armadillo сначала установите OpenBLAS и LAPACK, а также (необязательно) ARPACK и SuperLU. Также необходимо установить соответствующие файлы разработки для каждой библиотеки. Например, при установке пакета libopenblas
также установите пакет libopenblas-dev
.
Установщик на основе cmake определяет, какие релевантные библиотеки установлены на вашей системе (например, OpenBLAS, LAPACK, SuperLU, ARPACK и т. д.), и соответствующим образом модифицирует конфигурацию Armadillo. Установщик также генерирует библиотеку времени выполнения Armadillo, которая является оболочкой для всех обнаруженных библиотек.
Перейдите в каталог, созданный после распаковки архива armadillo (например, cd armadillo-10.6.1
), и запустите cmake с помощью команды:
cmake .
Примечание: точка, отделённая пробелом от cmake
, важна.
Чтобы включить обнаружение OpenBLAS в macOS, используйте дополнительную опцию ALLOW_OPENBLAS_MACOS
при запуске cmake:
cmake -DALLOW_OPENBLAS_MACOS=ON .
Для обнаружения стандартных BLAS и LAPACK используйте опцию ALLOW_BLAS_LAPACK_MACOS
:
cmake -DALLOW_BLAS_LAPACK_MACOS=ON .
По умолчанию cmake предполагает, что библиотека времени выполнения Armadillo и соответствующие заголовочные файлы будут установлены в системном каталоге по умолчанию (например, в иерархии /usr
в системах на базе Linux). Чтобы установить библиотеку и заголовки в альтернативном каталоге, используйте дополнительную опцию CMAKE_INSTALL_PREFIX
следующим образом:
cmake . -DCMAKE_INSTALL_PREFIX:PATH=alternative_directory
При необходимости повторного запуска cmake рекомендуется сначала удалить файл CMakeCache.txt
(не CMakeLists.txt
).
Внимание: если Armadillo установлен в нестандартном каталоге, убедитесь, что компилятор C++ настроен на использование подкаталогов lib
и include
в этом каталоге. Обратите внимание, что каталог lib
может называться по-разному в вашей системе. В последних 64-разрядных системах Debian & Ubuntu это lib/x86_64-linux-gnu
, а в последних 64-разрядных Fedora & RHEL — lib64
.
Если у вас есть доступ sudo (то есть права root/администратора/суперпользователя) и вы не использовали опцию CMAKE_INSTALL_PREFIX
, выполните следующую команду:
sudo make install
Если у вас нет доступа sudo, обязательно используйте опцию CMAKE_INSTALL_PREFIX
и выполните следующую команду:
make install
Ручная установка включает в себя простое копирование заголовка include/armadillo
и связанного с ним include/armadillo_bits
. Научные и инженерные задачи: рекомендации по использованию операционной системы Linux
Для научных и инженерных задач мы настоятельно рекомендуем использовать операционную систему на базе Linux, такую как:
9. Поддержка OpenBLAS и Intel MKL
Armadillo может использовать OpenBLAS или Intel Math Kernel Library (MKL) в качестве высокоскоростных замен для BLAS и LAPACK. По сути, это включает в себя связывание с заменяющими библиотеками вместо BLAS и LAPACK.
Могут потребоваться незначительные изменения в файле include/armadillo_bits/config.hpp
, чтобы гарантировать, что Armadillo использует те же размеры целых чисел и стиль имён функций, которые используются заменяющими библиотеками. В частности, могут потребоваться следующие определения:
ARMA_USE_WRAPPER
ARMA_BLAS_CAPITALS
ARMA_BLAS_UNDERSCORE
ARMA_BLAS_LONG
ARMA_BLAS_LONG_LONG
Дополнительную информацию о вышеуказанных определениях можно найти в документации.
В системах на базе Linux MKL может быть установлен в нестандартном месте, таком как /opt
, что может вызвать проблемы при связывании. Перед установкой Armadillo система должна знать, где находятся библиотеки MKL. Например, /opt/intel/mkl/lib/intel64/
. Этого можно достичь, установив переменную среды LD_LIBRARY_PATH
или, для более постоянного решения, добавив местоположения каталогов в /etc/ld.so.conf
. Также возможно сохранить текстовый файл с местоположениями в каталоге /etc/ld.so.conf.d
. Например, /etc/ld.so.conf.d/mkl.conf
. Если /etc/ld.so.conf
был изменён или /etc/ld.so.conf.d/mkl.conf
создан, необходимо запустить /sbin/ldconfig
после этого.
Ниже приведён пример /etc/ld.so.conf.d/mkl.conf
, где Intel MKL установлен в /opt/intel
:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
Если MKL установлен и постоянно возникают проблемы со связыванием, поддержку MKL можно отключить, отредактировав файл CMakeLists.txt, удалив CMakeCache.txt и повторно запустив установку на основе cmake. Закомментируйте строку, содержащую:
INCLUDE(ARMA_FindMKL)
10. Предостережение об использовании ключевого слова C++11 auto
Не рекомендуется использовать ключевое слово C++11 auto
с объектами и выражениями Armadillo.
У Armadillo есть шаблонная метапрограммирование, которая создаёт множество недолговечных временных объектов, которые не обрабатываются должным образом с помощью auto
.
11. Поддержка OpenMP
Armadillo может использовать OpenMP для автоматического ускорения вычислительно дорогих поэлементных функций, таких как exp(), log(), cos() и т. д. Для этого требуется компилятор C++, поддерживающий OpenMP 3.1+.
Для компиляторов GCC и Clang используйте следующую опцию для включения OpenMP: -fopenmp
12. Документация по функциям и классам
Документация по функциям и классам Armadillo доступна по адресу: https://arma.sourceforge.net/docs.html.
Также документация находится в файле docs.html
, распространяемом вместе с Armadillo. Используйте веб-браузер для просмотра.
13. Стабильность API и политика версий
Каждый выпуск Armadillo имеет свой публичный API (функции, классы, константы), описанный в сопроводительной документации API (docs.html), специфичной для этого выпуска.
Каждая версия Armadillo имеет свою полную версию, указанную как A.B.C, где A — основной номер версии, B — дополнительный номер версии, а C — уровень исправления. Спецификация версии имеет явное значение (аналогичное Semantic Versioning), как показано ниже:
В рамках основной версии (например, 10) каждая дополнительная версия имеет публичный API, который строго стремится к обратной совместимости (на уровне исходного кода) с публичным API предыдущих дополнительных версий. Например, пользовательский код, написанный для версии 10.0, должен работать с версией 10.1, 10.2 и т.д. Однако последующие дополнительные версии могут иметь больше функций (добавления и расширения API), чем предыдущие дополнительные версии. Таким образом, пользовательский код, специально написанный для версии 10.2, может не работать с 10.1.
Увеличение уровня исправления при сохранении основных и дополнительных версий указывает на изменения в коде и/или документации, направленные на исправление ошибок без изменения публичного API. Изменения в существующем публичном API и предпочтение не нарушать работу пользовательского ПО.
Однако, чтобы обеспечить возможность развития, публичное API в будущих основных версиях будет оставаться обратно совместимым, насколько это возможно (например, основная версия 11 может иметь немного другое публичное API, чем основная версия 10).
Оговорка: приведённая выше политика применяется только к публичному API, описанному в документации. Любая функциональность в Armadillo, которая явно не описана в документации публичного API, считается внутренней деталью реализации и может быть изменена или удалена без уведомления.
Armadillo прошёл обширное тестирование и успешно используется в производственных средах. Однако, как и почти во всём программном обеспечении, невозможно гарантировать 100% правильную функциональность.
Если вы обнаружите ошибку в библиотеке или документации, мы хотели бы узнать об этом. Пожалуйста, создайте небольшую и самодостаточную программу, которая выявляет ошибку, а затем отправьте исходный код программы и описание ошибки разработчикам. В небольшой программе должна быть функция main() и использоваться только функции/классы из Armadillo и стандартной библиотеки C++ (никаких других библиотек).
Контактная информация находится по адресу:
https://arma.sourceforge.net/contact.html
Дополнительная информация об Armadillo представлена на странице часто задаваемых вопросов:
https://arma.sourceforge.net/faq.html
Папка mex_interface содержит примеры того, как взаимодействовать с Octave/Matlab с использованием матриц Armadillo на языке C++.
ensmallen: библиотека C++ для нелинейной численной оптимизации (L-BFGS, SGD, CMA-ES и т. д.)
https://ensmallen.org/
Bandicoot: библиотека C++ для ускоренной линейной алгебры на графических процессорах
https://coot.sourceforge.io
MLPACK: обширная библиотека алгоритмов машинного обучения
https://mlpack.org
RcppArmadillo: интеграция Armadillo с R
https://dirk.eddelbuettel.com/code/rcpp.armadillo.html
CARMA: интерфейс между Armadillo и Python / NumPy
https://github.com/RUrlus/carma
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )