我一直在尝试优化我的程序一段时间。它有100多个子程序。到目前为止,我使用英特尔Fortran编译器的优化标志如下。
Optimization flag Time of completion
-c 0.190 hr
-O3 0.185 hr
-fast 0.155 hr
所以,使用优化标志“-fast”我能够获得18.42%的速度。我想知道是否有任何其他优化标志,我可以尝试让我的程序运行得更快。因为现在,当我用我的问题只用O2标志运行我的程序时,花了大约25个小时才能完成。我真的需要提高计算效率。
我从https://support.scinet.utoronto.ca/wiki/images/7/77/Snug_techtalk_compiler.pdf
找到了有关“-fast”标志的信息我在linux中使用intel fortran 13.1编译器。
非常感谢任何帮助。
非常感谢你。
最诚挚的问候,
Jdbaba
答案 0 :(得分:2)
您没有说明您正在使用哪种编译器,但暗示英特尔会使用您的链接。使用Intel ifort,您可以尝试-parallel
并获得自动并行化。过去某些时候,编译器将使用您的源代码做到最好,并且进一步的运行时间减少将需要改进错误的编码决策或算法改进,我们都没有从您的问题中提供信息来提供具体建议。 “profiling”表示程序花费运行时的位置。如果程序仅在子程序A中花费1%的运行时间,那么使子程序A运行速度快十倍是没有意义的......你将获得很少的整体改进。最好处理程序花费80%或50%或其运行时间的子程序。