促进 C++库

……其中一个世界。 赫伯·萨特安德烈亚历山德雷斯库C类++编码标准

基本线性代数库

uBLAS是一个C++模板类库,它提供BLAS公司级别1、2、3密集矩阵、压缩矩阵和稀疏矩阵的功能。设计和实现通过运算符重载和通过表达式模板高效生成代码。

功能

uBLAS为密集向量、单位向量和稀疏向量、密集向量、恒等向量、三角形向量、带状向量、,对称矩阵、hermitian矩阵和稀疏矩阵。向量和矩阵的视图可以通过范围、切片、,适配器类和间接数组。该库涵盖了向量和矩阵的常用基本线性代数运算:向量和矩阵的不同范数、加减和标量、内外乘法向量的乘积、矩阵向量和矩阵矩阵乘积以及三角形解算器。容器、视图之间的粘合剂而表达式模板化操作主要是STL公司一致迭代器接口。

文档

发行说明

可以找到发行说明在这里.

已知限制

更多信息

作者和学分

uBLAS最初由Joerg Walter和Mathias Koch编写。我们要感谢所有支持和为该图书馆的发展做出贡献的有:大卫·阿布拉哈姆斯、埃德·布雷、费尔南多·卡奇奥拉、胡安·何塞·戈麦斯·卡德纳斯、,Beman Dawes、Matt Davies、Bob Fletcher、Kresimir Fresl、Joachim Kessel、Patrick Kowalzick、Toon Knapen、Hendrik Kueck、,约翰·马多克(John Maddock)、延斯·莫雷尔(Jens Maurer)、阿列克谢·诺瓦科夫(Alexei Novakov)、加里·鲍威尔(Gary Powell,迈克尔·史蒂文斯(Michael Stevens)、贝内迪克特·韦伯(Benedikt Weber)、马丁·韦瑟(Martin Weiser)、冈特·温克勒(Gunter Winkler)、马克·齐默尔曼(Marc Zimmermann)、马可·瓜佐内(Marco Guazone)、纳索斯·伊利奥普卢斯(Nasos Iliopoulus)、促进以及世界各地的所有其他贡献者。我保证我会尽力把他们的名字加入这个名单。

该图书馆目前由David Bellot和Stefan Seefeld维护。

常见问题

Q: 我应该在新项目中使用uBLAS吗?
A: 在编写本报告时(2012年9月),有很多很好的矩阵库可用,例如。,MTL4型犰狳特征.uBLAS提供了一组经过良好测试的稳定矢量和矩阵类、线性代数的典型运算和三角方程组的求解器。uBLAS提供稠密、结构化和稀疏矩阵-都使用类似的接口。最后,uBLAS提供了良好的(但并不突出)性能。另一方面,uBLAS的最后一次重大改进是在2008年,没有做出重大改变自2009年以来。因此,人们应该问自己一些问题来帮助做出决定:可利用性?uBLAS是boost的一部分因此在许多环境中都可用。易于使用?uBLAS易于用于简单的事情,但需要体面当你离开这条路时,C++知识。性能?有更快的选择。前沿?uBLAS公司已经有10多年的历史了,错过了C++11中的所有新内容。

Q: 我正在运行uBLAS密集向量和矩阵基准测试。为什么我看到显著的性能差异在本机C和库实现之间?
A: uBLAS区分调试模式(启用大小和类型一致性检查,禁用表达式模板)和发布模式(禁用大小和类型一致性检查,启用表达式模板)。请检查,如果预处理器符号NDEBUG公司属于卡塞特已定义。NDEBUG公司启用释放模式,这反过来使用表达式模板。您可以选择定义BOOST_UBLAS_NDEBUG(引导_非驱动)要禁用所有边界,请构造以及uBLAS的类似检查。

Q: 我编写了一些uBLAS测试,试图错误地分配不同的矩阵类型或溢出向量矩阵维数。为什么我得不到编译时或运行时诊断?
A: uBLAS区分调试模式(启用大小和类型一致性检查,禁用表达式模板)和发布模式(禁用大小和类型一致性检查,启用表达式模板)。请检查,如果预处理器符号NDEBUG公司属于卡塞特已定义。NDEBUG公司禁用所需的调试模式获取大小和类型一致性检查。

Q: 我已经编写了一些uBLAS基准测试来衡量矩阵链乘法的性能,比如触头(A,触头(B、C)并看到由于使用表达式模板而导致的显著性能损失。如何禁用表达式模板?
A: 无需禁用表达式模板。请尝试使用以下任一方法重新引入临时触头(答:, 矩阵_类型 (戳(B,C))触头(A,戳<矩阵类型 >(B、C).


版权所有(©)2000-2011 Joerg Walter,Mathias Koch,Gunter Winkler,David Bellot
使用、修改和分发受Boost软件许可证1.0版的约束。(见随附文件LICENSE_1_0.txt或复制于http://www.boost.org/LICENSE_1_txt).