1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-armadillo-code

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 07:51 a406ede

Лицензия


4. Предпосылки и зависимости

Функциональность Armadillo частично зависит от других библиотек:

  • OpenBLAS (или стандартный BLAS);
  • LAPACK;
  • ARPACK;
  • SuperLU.

Рекомендуется использовать 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 имеет следующие ограничения:

  • SuperLU должен быть доступен в виде разделяемой библиотеки;
  • поддерживаются только версии SuperLU 5.2.x, 5.3.x и 6.0.x;
  • версия SuperLU 6.0.x должна быть скомпилирована с использованием 32-битного размера по умолчанию.

5. Linux и macOS: установка

Установить Armadillo можно несколькими способами: вручную или через cmake, с правами администратора или без них. Рекомендуется использовать установку на основе cmake.

Инструмент cmake можно загрузить с сайта https://www.cmake.org или (предпочтительно) установить с помощью менеджера пакетов на вашей системе; на системах macOS cmake можно установить через MacPorts или Homebrew.

Перед установкой Armadillo сначала установите OpenBLAS и LAPACK, а также (необязательно) ARPACK и SuperLU. Также необходимо установить соответствующие файлы разработки для каждой библиотеки. Например, при установке пакета libopenblas также установите пакет libopenblas-dev.

5a. Установка через CMake

Установщик на основе 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

5b. Ручная установка

Ручная установка включает в себя простое копирование заголовка 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, считается внутренней деталью реализации и может быть изменена или удалена без уведомления.


14. Отчёты об ошибках и часто задаваемые вопросы

Armadillo прошёл обширное тестирование и успешно используется в производственных средах. Однако, как и почти во всём программном обеспечении, невозможно гарантировать 100% правильную функциональность.

Если вы обнаружите ошибку в библиотеке или документации, мы хотели бы узнать об этом. Пожалуйста, создайте небольшую и самодостаточную программу, которая выявляет ошибку, а затем отправьте исходный код программы и описание ошибки разработчикам. В небольшой программе должна быть функция main() и использоваться только функции/классы из Armadillo и стандартной библиотеки C++ (никаких других библиотек).

Контактная информация находится по адресу:
https://arma.sourceforge.net/contact.html

Дополнительная информация об Armadillo представлена на странице часто задаваемых вопросов:
https://arma.sourceforge.net/faq.html


15. MEX-интерфейс для Octave/Matlab

Папка mex_interface содержит примеры того, как взаимодействовать с Octave/Matlab с использованием матриц Armadillo на языке C++.


16. Связанное программное обеспечение, использующее Armadillo

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-armadillo-code.git
git@api.gitlife.ru:oschina-mirror/mirrors-armadillo-code.git
oschina-mirror
mirrors-armadillo-code
mirrors-armadillo-code
12.8.x