基本线性代数库
uBLAS是一个C++模板类库,它提供BLAS公司级别1、2、3密集矩阵、压缩矩阵和稀疏矩阵的功能。设计和实现通过运算符重载和通过表达式模板高效生成代码。
功能
uBLAS为稠密、单位和稀疏向量、稠密、同一、三角形、带状、,对称矩阵、厄米矩阵和稀疏矩阵。向量和矩阵的视图可以通过范围、切片、,适配器类和间接数组。该库涵盖了向量和矩阵的常用基本线性代数运算:向量和矩阵的不同范数、加减和标量、内外乘法向量乘积、矩阵向量乘积和矩阵矩阵乘积以及三角形解算器。容器、视图之间的胶水而表达式模板化操作主要是STL公司一致迭代器接口。
文档
已知限制:
- 实现采用线性内存地址模型。
- 调整的重点是密集矩阵。
更多信息
项目位置和下载
uBLAS的最新稳定版本是促进库。
文档和讨论
访问有效uBLAS公司获取最新信息和贡献的wiki。
还有一个活动的uBLAS邮件列表其中uBLAS特定用户和回答了发展问题。
uBLAS和Boost项目
还有一个活动的uBLAS邮件列表其中uBLAS特定于最新的uBLAS项目代码。你可以看法助推CVS直接存档。你会找到图书馆在这里文件和测试程序驻留在这里.
作者和学分
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 Guazzone、Nasos Iliopoulus促进以及世界各地的所有其他贡献者。我保证我会尽力把他们的名字加入这个名单。
此库当前由维护大卫·贝洛特.
常见问题
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_0.txt).