uBLAS - это библиотека классов шаблонов C++, которая предоставляетBLASуровень 1, 2, 3 функциональность для плотных, упакованных и разреженных матриц. Проектирование и реализация унифицируют математическую нотацию через перегрузку оператора и эффективную генерацию кода через шаблоны экспрессии.
Functionality
uBLAS предоставляет шаблонные классы C++ для плотных, единичных и разреженных векторов, плотных, идентичности, треугольных, полосатых, симметричных, отшельнических и разреженных матриц. Виды на векторы и матрицы могут быть построены через диапазоны, срезы, классы адаптера и косвенные массивы. Библиотека охватывает обычные базовые операции линейной алгебры на векторах и матрицах: сокращения вроде различных норм, сложение и вычитание векторов и матриц и умножение со скалярными, внутренними и внешними продуктами векторов, матричными векторами и матричными продуктами и треугольным решателем. Клей между контейнерами, представлениями и шаблонными операциями экспрессии в основном представляет собой интерфейс итератораSTL.
Реализация предполагает линейную модель адреса памяти.
Тюнинг был сосредоточен на плотных матрицах.
Further Information
Project Location and Download
Последняя стабильная версия uBLAS является частью библиотекBoost.
Documentation and Discussion
Эффективный uBLASВики для актуальной информации и вкладов.
Существует также активный список рассылки uBLAS, в котором uBLAS отвечает на конкретные вопросы пользователей и разработчиков.
uBLAS and Boost Project
Существует также активный список рассылки uBLAS, в котором uBLAS специфичен из последнего кода проекта uBLAS. Вы можетепросмотретьархив Boost CVS напрямую. Здесь вы найдете библиотеку. Документация и тестовые программы находятся здесь.
Authors and Credits
Изначально uBLAS были написаны Йоргом Уолтером и Матиасом Кохом. Мы хотели бы поблагодарить всех, кто поддержал и способствовал развитию этой библиотеки: David Abrahams, Ed Brey, Fernando Cacciola, Juan Jose Gomez Cadenas, Beman Dawes, Matt Davies, Bob Fletcher, Kresimir Fresl, Joachim Kessel, Patrick Kowalzick, Toon Knapen, Hendrik Kueck, John Maddock, Jens Maurer, Alexe Novakov, Gary Powell, Joachim Pyras, Peter Schmitteckert, Jeremy Siek, Markus Steffl, Michael Stevens, Benedikt Weber, Martin Weiser, Gunter Winkler, Marc Zimmermann, Marco Guazzone, Nasos Iliopoulus, участникиBoostи все остальные участники по всему миру. Я постараюсь добавить их имена в этот список.
В настоящее время библиотека поддерживается. Дэвид Белло.
Часто задаваемые вопросы
Вопрос: Нужно ли использовать uBLAS для новых проектов? A: На момент написания (09/2012) имеется множество хороших матричных библиотек, например,MTL4,armadillo,eigen. uBLAS предлагает стабильный, хорошо протестированный набор векторных и матричных классов, типичных операций для линейной алгебры и решателей для треугольных систем уравнений. uBLAS предлагает плотные, структурированные и разреженные матрицы - все с использованием аналогичных интерфейсов. И, наконец, uBLAS предлагает хорошую (но не выдающуюся) производительность. С другой стороны, последнее значительное улучшение uBLAS было в 2008 году, и никаких существенных изменений не было совершено с 2009 года. Поэтому нужно задать себе несколько вопросов, чтобы помочь принять решение:Доступность.uBLAS является частью форса и, таким образом, доступен во многих средах. 32 Легко ли пользоваться?uBLAS прост в использовании, но требует приличных знаний на C++.Спектакль?Есть более быстрые альтернативы.Режущий край?uBLAS более 10 лет и пропустил все новые вещи из C++11.
В: Я запускаю uBLAS плотный вектор и матричные бенчмарки. Почему я вижу значительную разницу в производительности между нативными реализациями C и библиотеками? A: uBLAS различает режим отладки (размер и тип проверки соответствия включен, шаблоны выражения отключены) и режим выпуска (размер и тип проверки соответствия отключены, шаблоны выражения включены). Пожалуйста, проверьте, определен ли символ препроцессора<NDEBUG>из<cassert>.<NDEBUG>включает режим выпуска, который, в свою очередь, использует шаблоны выражения. Вы можете необязательно определить<BOOST_UBLAS_NDEBUG>, чтобы отключить все границы, структуру и аналогичные проверки uBLAS.
Вопрос: Я написал несколько тестов uBLAS, которые пытаются неправильно назначить различные типы матриц или перенаправить векторные и матричные размеры. Почему бы мне не получить время компиляции или время выполнения диагностики? A: uBLAS различает режим отладки (размер и тип проверки соответствия включен, шаблоны выражения отключены) и режим выпуска (размер и тип проверки соответствия отключены, шаблоны выражения включены). Пожалуйста, проверьте, определен ли символ препроцессора<NDEBUG>из<cassert>.<NDEBUG>отключает режим отладки, который необходим для проверки соответствия размера и типа.
Вопрос: Я написал несколько бенчмарков uBLAS для измерения производительности умножения матричных цепочек, таких как<prod (A,
prod (B, C))>, и вижу значительное наказание за производительность из-за использования шаблонов выражения. Как я могу отключить шаблоны выражения? A: Вам не нужно отключать шаблоны выражения. Пожалуйста, попробуйте восстановить временные периоды, используя либо<prod
(A,><matrix_type><(prod (B, C)))>, либо<prod (A,
prod<><matrix_type><> (B, C))>.
Статья Boost Basic Linear Algebra раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.