×

便携式高性能数值线性代数的现代框架。 (英语) Zbl 0943.65037号

Langtangen,Hans-Petter(编辑)等人,《科学计算软件工具的进展》。科学计算现代软件工具国际研讨会,SciTools’98,挪威奥斯陆,1998年9月14日至16日。柏林:斯普林格。莱克特。注释计算。科学。工程10,1-55(2000)。
摘要:我们提出了一种通用的编程方法,用于表示数值线性代数的数据结构和算法。我们还介绍了这种方法的一种高性能实现,即矩阵模板库(MTL)。与标准模板库一样,我们的方法是五重的,包括泛型函数、容器、迭代器、适配器和函数对象,所有这些都是专门为高性能数值线性代数开发的。在我们的框架中,我们提供了与定义线性代数的数学运算相对应的泛型函数。类似地,容器、适配器和迭代器用于表示和操作具体的线性代数对象,如矩阵和向量。
然而,对于许多科学计算用户来说,优雅的编程界面的优点仅次于性能问题。我们如何在MTL中取得高绩效有两个方面。第一个是在现代优化编译器中使用静态多态性(模板函数),实现了极大的灵活性,同时不会损失性能。第二是将抽象应用于优化过程本身。基本线性代数指令集(BLAIS)是几个重要优化的抽象接口。
我们的实验结果表明,尽管MTL和BLAIS完全用C++编写,但使用BLAIS的MTL实现的性能与供应商优化的库一样好或更好。因此,我们得出结论,与传统观点相反,抽象的使用并不是性能的障碍,而且某些抽象实际上可以促进优化。此外,MTL的实现需要更少数量级的代码行,同时节省了开发和维护工作。
关于整个系列,请参见[Zbl 0930.00058号].

MSC公司:

65传真 数值线性代数
65日元 数值算法的封装方法
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
65年20月 数值算法的复杂性和性能
PDF格式BibTeX公司 XML格式引用