1

一段时间以来,我一直在尝试优化我的程序。它有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 编译器。

非常感谢任何帮助。

非常感谢。

最好的祝福,

贾巴巴

4

1 回答 1

3

您没有说您正在使用哪个编译器,而是在您的链接中暗示英特尔。借助 Intel ifort,您可以尝试-parallel获得自动并行化。过去某个时间点,编译器会尽力处理您的源代码,进一步减少运行时间将需要改进错误的编码决策或算法改进,我们都没有来自您的问题的信息来提供具体建议。“分析”是确定你的程序在哪里花费它的运行时间。如果程序只在子例程 A 中花费 1% 的运行时间,那么让子例程 A 的运行速度提高 10 倍是没有意义的……你将获得很少的整体改进。最好处理程序花费 80% 或 50% 或...运行时的子例程。

于 2013-02-01T07:36:06.347 回答