MTL--c++科学计算库--介绍

MTL--c++科学计算库--介绍

 

本文来源是:http://www.osl.iu.edu/research/mtl/

矩阵模板库(Matrix Template Library,缩写为MTL)是一个提供了针对矩阵格式的复杂的线性代数泛函的可以广泛使用的高性能的泛型组件库。

像标准模板库(STL)一样,MTL使用了五种元素,包括泛型函数,容器,迭代器,适配器以及函数对象。这些都是为了满足高性能的数值线性代数而精心开发的。在该框架内,MTL提供了线性代数的数学运算的泛型算法;类似地,容器,适配器以及迭代器可以用来容纳和管理像矩阵和向量这样的线性代数对象。

对许许多多的科学计算用户来说,拥有一流的编程接口要次于更高的性能。泛型编程在这方面是一个强有力的工具--性能优化可以作一般性的描述。这些性能调整基于一个底层库--基本线性代数指令集(BLAIS)。
实验结果表明MTL的性能可以达到或者优于商业库。因此,MTL表明适当的抽象可以用来得到相对于传统的思维更好的性能.并且,MTL需要更少的代码来实现,这样也节省了开发和维护的精力。

特征

MTL是:
范型的,直交的(?)和广泛使用的:
   MTL包含了大量的数据格式和算法,包括常用的稀疏和稠密矩阵
灵活的和可扩展的:
   MTL的接口已经被设计为很容易地扩展。
高性能:
   使用一个可以良好优化的编译器,比如KAI's c++, MTL可以提供等于--在大多情况下,优于--商业库的性能.
可信赖的:
   MTL在很多种平台下被测试过
轻便的:
   MTL是在ANSI c++标准内编写的,可以在任何一个运行符合ANSI c++编译器的平台上编译和使用。当前,已知可以工作的编译器是
各种平台上的KAI's c++,SGI上的MIPS ro 7.3,NT上面的vc 6.0和Metrowerks CodeWarrior Pro 5,以及各种平台上的gcc 2.95.x.
想要更多的信息可以查看http://www.osl.iu.edu/research/mtl/faq.php3


小注:
osl是Open System Lab的缩写,这是位于美国印第安娜州立大学的一家实验室。
这间实验室同时也是一些Boost库的提供者,比如Boost Graph Library,Parallel Boost Graph Library.


下面摘译了几条FAQ中的内容:

Why is MTL written in C++ and not Fortran?
为什么MTL使用了c++而不是Fortran?

MTL有两个特性:泛型和高性能。为了实现MTL,一种语言必须支持泛型和有能力提供高性能。当前,很多语言要么提供泛型,要么有性
能保证,但是只有c++可以两者兼而有之。比如Fortran在性能方面有着卓著的名声,然而,没有它不支持泛型。正如我们的性能结果显
示的那样,c++可以提供和Fortran匹敌的性能。

Why is MTL written in C++ and not Java?
为什么MTL使用了c++而不是Java?

Java语言是为了某些特定的目的而设计的,而科学计算并不是这些目的之一,范型编程也不是.
为了给科学计算提供足够的性能,Java必须被编译为本地对象代码而不是字节码. 为了支持泛型,Java语言间不得不支持操作符重载和模板
(译者注:现在java也支持泛型了,但是不是完全的泛型。好像还不支持操作符重载吧)。呵呵,模板,重载,编译到本地对象代码。
除此之外,java在浮点数模型中也有些问题。

 

文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/c++/cppjs/20090303/157233.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值