本帖最后由 liutruman 于 2010-9-19 18:31 编辑
很多时候,我们编写程序忽略了计算机软硬件条件对程序计算性能的影响,下面将谈谈一些这方面的研究工作,与祝君共勉.
操作系统分析
为了比较操作系统对计算速度的影响,分别在Linux 下采用Intel Fortran 9.1编译器和在Windows下采用Intel Visual Fortran 9.0编译器编译生成有限元程序。由于这两个编译器都隶属于Intel公司的产品,因而在Windows下和Linux下运行的有限元结果是一致的,有利于比较操作系统对有限元计算速度的影响。由于单个有限元程序计算速度很快,特别是单元数量较少时,在获取程序运行时间时可能会出现偶然的误差。为了消除这种误差,采用循环执行有限元程序n次获得整体时间t,最后得到单个程序的平均计算时间t/n。采用有限元程序的计算时间比(Windows/Linux)来说明操作系统的选择对计算速度的影响,当单元个数较少时,在Linux下的计算速度要远远快于Windows下的程序执行速度,计算时间最多可以节省33%。当单元个数增加,节省的时间比例有所降低。然而,由于单元数增加,总体的计算时间增加,因而在减少的计算时间总量上,表现依然明显。
计算机软件和语言
采用科学计算语言FORTRAN 语言的95自由编码格式编写有限元程序,该格式改变了传统的固定编码形式,体现了很好的结构化和面向对象的程序设计特点。分别采用了CVF编译器和IVF编译器生成有限元程序,IVF编译器提供了对计算机新型CPU的众多优化功能,特别是对SSE3指令集的支持,因而IVF编译的有限元程序计算速度明显快于CVF编译的程序。测试结果表明,采用IVF9.0编译的有限元程序相对于CVF最多可以节省10到30%的计算时间,而采用IVF10.0编译的有限元程序相对于CVF最多可以节省20到40%的计算时间。优化结果为选择科学计算语言FORTRAN编写有限元程序,编译器为Intel Visual Fortran Compiler 10.0,选用Intel的处理器以采用编译器获得最佳的优化功能。
辅助硬件数量和质量
在计算机硬件对计算速度的影响上,计算机的硬件是提高应用程序计算速度和运行效率的最重要途径之一。在运行刚塑性有限元程序时,发现程序运行内存的使用不到50M,而CPU的利用率接近100%,这表明影响刚塑性有限元程序计算速度的主要硬件因素是CPU。
计算机硬件使得有限元程序的计算速度成倍地提高,特别是CPU技术的发展。早期的Sgi工作站上程序的计算速度比现在的主流PC机低一个量级。用有限元程序对主流CPU的计算速度测试比较表明Intel的处理器由于其流水线长,在没有通过IVF编译器优化以前,计算速度不如AMD处理器。然而,当采用IVF优化Intel处理器各项新功能后,特别是对SSE3指令集的充分优化,程序的计算速度要快于在AMD处理器上的程序运行速度。因此,快速有限元的软硬件平台应为Intel公司的新型Intel Fortran编译器结合Intel的新型CPU,以充分优化CPU的各项新功能,提高程序的计算速度。
采用FORTRAN95格式的Module功能可以实现高效结构化和面向对象程序设计的新思路;对数组分配固定内存大小,对提高计算速度优势明显。此外,提高计算速度的方法有减少程序计算过程中和硬盘或者外部设备的数据交换、数组读写采用列优先原则以充分利用缓存、以及其他编程技巧(如避免重复计算、表达式的选择、整数和浮点数的选择、访问速度、利用Cache、减少程序代码的跳转、并行语句的使用、数组运算简化等);编译程序时,应采用release的full optimization格式或者采用命令行编译生成经过优化的执行效率高的程序,以提高程序的计算速度。根据软硬件平台的优化结果,选择的有限元编程语言为FORTRAN,编译器为Intel Visual Fortran Compiler 10.0,计算机的硬件主要是CPU,建议选用Intel的处理器。操作系统为保持通用性仍然可以选择WINDOWS,考虑计算效率和安全性应选择Linux或者Unix。
|