MTL--c++科学计算库--介绍
来源:互联网 发布:软件外包网 编辑:程序博客网 时间:2024/06/05 10:09
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
- MTL--c++科学计算库--介绍
- MTL--c++科学计算库--介绍
- 介绍矩阵计算库MTL
- Python科学计算函数库介绍
- C++科学计算库
- python科学计算库
- python 科学计算库
- [C++]算术计算器 简单计算+科学计算
- MTL库和C标准库冲突的解决办法
- Blitz++与MTL两大数值计算程序库(C++)的简介
- Blitz++与MTL两大数值计算程序库(C++)的简介
- Blitz++与MTL两大数值计算程序库(C++)的简介
- Blitz 与MTL两大数值计算程序库(C )的简介
- Blitz++与MTL两大数值计算程序库(C++)的简介
- C++科学计算库,gsl
- Python科学计算类库
- python科学计算库安装
- Python科学计算库NumPy
- android SDK升级连接不上服务器解决方案(安装SDK)
- android 有线 pppoe拨号,请问?
- 数据库的安全和完整性约束
- Iphone开发(十)简单的列表tableView与行的响应事件
- 文章的关键字获得焦点显示提示内容,关键字失去焦点隐藏提示内容
- MTL--c++科学计算库--介绍
- 压力测试工具ApacheBench使用体会
- Tobject 类解析
- .net学习前奏----.Net还是Java?
- nyoj 163 phonelist 字典树(2)
- JS中实现replaceAll的方法
- 读Head Rush Ajax的想法
- Android 推送之Androidpn项目分析(一)
- AsyncTask cancel