论文部分内容阅读
伴随着计算技术的发展,在实际应用需求的推动下,数值计算得到了长足进步。数值软件尤其是并行数值软件是当前数值计算应用的关键环节。日益增多的大规模、复杂实际应用问题,对数值软件的无缝协作不断提出更高要求。建立一套普适的数值软件互操作机制,以促进各类数值软件的集成,并便利其设计、开发和维护,就具有重要意义和现实紧迫性。有针对性地使用和分析国内外一些优秀的数值软件,借鉴其宝贵经验,必将对实际数值应用程序开发产生积极影响。
Trilinos是美国能源部下属Sandia国家实验室的一个大型数值软件项目,受到数个官方研究计划的资助。其目标是构造一个灵活的软件框架,在此之上进行具有挑战性的各类大规模数值应用。
本文主要分析研究了Trilinos的设计思想、体系结构,接着从外在功能、设计特色和典型使用等角度,对其中的软件包进行逐一分析。Trilinos定义了一个线性代数对象模型,自动支持进程间通信,并作为各种软件包的构建基础和沟通载体,Epetra就是此模型当前比较成熟的实现。着重于基本线性代数包Epetra,剖析了其主要类层次结构,给出了相应的UML类图表示,进而较为详尽地讨论了其中核心类的功能、使用与设计实现等细节。最后使用典型测试数据进行数值实验,以探索其行之有效的使用模式。
在具有强大功能的同时,Trilinos的正确使用颇具难度,而充分发挥其性能优势更是不易。以此为着眼点,文中从普通用户角度出发,选取Matrix Market数据库中若干测试矩阵,以分布式并行系统的主要编程模型MPI为平台,调用Epetra、线性迭代解法器和图划分工具hMETIS进行具体实验,实现了顺利求解,并获得了相关性能数据。理论分析和数值实验展示了有效使用Trilinos的可能性,探索了Trilinos与其他软件工具包的联用能力,从而拉近了此优秀软件与实际数值应用之间的距离。