2007年5月17日星期四

TNT - Template Numerical Toolkit

TNT:http://math.nist.gov/tnt/index.html
数值计算用的库中,最著名的就是Lapack,Lapack++是Lapack的C++版本,但是官方的说法是Lapack++已经停止了开发,并由这个TNT来替代。虽然有些人(甚至不只一组人)仍然在开发Lapack++。

TNT在很多的报告中被评价为现在速度最快的模板库,但是它的页面上由于对很多函数没有更细致的说明和示例程序,所以大家似乎对他不太热情,因而前赴后继地有大量的重复功能的数值计算库被人弄出来,但是在性能上可能都没有什么真正的提高。

TNT的页面没有用户反馈的信息,甚至连开发者的信息都少得可怜,以至于被人怀疑是不是已经停止了开发。但是它确实还活着,开发历史页显示了最新的更新。

数值计算,解线性方程的LU分解,QR分解,CG共轭梯度等等方法都有。

TNT由一组.h头文件组成,不需要链接什么lib或者dll之类的。

网站上的介绍是:

The Template Numerical Toolkit (TNT) is a collection of interfaces and reference implementations of numerical objects useful for scientific computing in C++. The toolkit defines interfaces for basic data structures, such as multidimensional arrays and sparse matrices, commonly used in numerical applications. The goal of this package is to provide reusable software components that address many of the portability and maintennace problems with C++ codes.

TNT provides a distinction between interfaces and implementations of TNT components. For example, there is a TNT interface for two-dimensional arrays which describes how individual elements are accessed and how certain information, such as the array dimensions, can be used in algorithms; however, there can be several implementations of such an interface: one that uses expression templates, or one that uses BLAS kernels, or another that is instrumented to provide debugging information. By specifying only the interface, applications codes may utilize such algorithms, while giving library developers the greatest flexibility in employing optimization or portability strategies.

What next?

* take a quick look at the examples to see how arrays are used in TNT.
* browse the Overview section to see what TNT offers.
* consult the on-line Documentation for a detailed description of data structures and algorithms.
* Download the source code and documentation.

没有评论: