Armadillo: библиотека C++ на основе шаблонов для линейной алгебры
Armadillo: a template-based C++ library for linear algebra
2016-06-10
SCID: 54.1/wqyu77zn
Discuss with AI
библиотека Armadillo для C++умножение матриц с ускорением на GPUинтеграция с LAPACKлинейная алгебрашаблонное метапрограммирование
Figures from the paper
Abstract (AI)
Язык C++ часто используется для реализации функциональности, чувствительной к производительности и/или расходу ресурсов. Хотя стандартная библиотека C++ предоставляет множество полезных алгоритмов, таких как сортировка, в ее текущем виде она не обеспечивает непосредственную поддержку линейной алгебры (матричной математики). Armadillo — это библиотека линейной алгебры с открытым исходным кодом для C++, предназначенная для достижения оптимального баланса между скоростью и удобством использования. Ее высокоуровневый программный интерфейс (API) намеренно близок к интерфейсам широко используемых языков Matlab и Octave (Eaton et al. 2015), благодаря чему математические операции можно выражать привычным и естественным образом. Библиотека подходит для разработки алгоритмов непосредственно на C++, а также для относительно быстрого переноса исследовательского кода в производственные среды. Armadillo предоставляет эффективные объекты для векторов, матриц и кубов (тензоров третьего порядка), а также более 200 связанных функций для обработки данных, хранящихся в этих объектах. Поддерживаются целые числа, числа с плавающей запятой и комплексные числа, а также плотные и разреженные форматы хранения. Различные разложения матриц доступны благодаря интеграции с LAPACK (Demmel 1997) или одной из его высокопроизводительных замен с совместимым интерфейсом, например Intel MKL (Intel 2016) или OpenBLAS (Xianyi, Qian, and Saar 2016). Armadillo также можно использовать совместно с NVBLAS для получения ускоренного с помощью графического процессора умножения матриц (NVIDIA 2015). Armadillo служит основой для других проектов с открытым исходным кодом, таких как MLPACK — библиотека C++ для машинного обучения и распознавания образов (Curtin et al. 2013), — и RcppArmadillo, обеспечивающий связь между языком R и C++ для ускорения вычислений (Eddelbuettel and Sanderson 2014). Внутри Armadillo используется вычислитель выражений, основанный на методах шаблонного метапрограммирования (Abrahams and Gurtovoy 2004), который автоматически объединяет несколько операций для повышения скорости и эффективности. Обзор внутренней архитектуры приведен в работе (Sanderson 2010).
Key Findings
1
Armadillo интегрируется с LAPACK, Intel MKL и OpenBLAS для матричных факторизаций, а также может использовать NVBLAS для ускорения умножения матриц на GPU.
2
Armadillo — это открытая библиотека линейной алгебры для C++, разработанная для баланса между вычислительной производительностью и удобством использования.
3
Её высокоуровневый API, похожий на Matlab и Octave, позволяет естественно записывать математические операции и ускоряет разработку алгоритмов и перенос исследовательского кода.
4
Встроенный вычислитель выражений на основе шаблонного метапрограммирования автоматически объединяет операции для повышения скорости и эффективности; библиотека также служит основой для MLPACK и RcppArmadillo.
5
Библиотека предоставляет объекты для векторов, матриц и тензоров третьего порядка, более 200 функций обработки данных, несколько числовых типов и плотные или разреженные форматы хранения.
Research Object
Armadillo — библиотека линейной алгебры с открытым исходным кодом для C++, основанная на шаблонах
Research Subject
Быстродействие, эффективность использования ресурсов, удобство применения и поддержка библиотекой операций линейной алгебры над матрицами, векторами и тензорами, факторизаций, плотных и разреженных форматов, а также ускоряемого GPU умножения матриц
Publication Details
Publication Date
2016-06-10
Journal
Publisher
ISSN
Open access PDF
Access Type
Author Information
Download PDF
Subscribe to digest