0

好吧,到目前为止,我已经问自己这个问题很长时间了。

我开始使用 GNU Fortran 编译器 ( gfortran),我非常高兴。但后来我开始听说英特尔 Fortran 编译器 ( ifort) 更好,因为它针对英特尔处理器进行了优化(因此针对当今大多数计算机进行了优化,因为英特尔拥有更大的市场份额)。之后我开始使用ifort,但事实是我对它并不完全满意,因为它没有检测到一些错误gfortran(即问题:“引用传递正在改变矩阵的值”)。

确实还有其他 Fortran 编译器,但实际上,我从不使用 and 之外的其他编译gfortranifort

所以想问大家:各有什么优缺点?如果优化不重要,哪个是最好的?

4

1 回答 1

3

在我看来,最好坚持你熟悉的标准,并编写符合该标准的代码。然后,编译器的选择取决于对所述标准的支持。

以下是对20032008标准的编译器支持的详尽列表。

我自己也经常使用g95,因为我喜欢调试信息。现在,我通常使用 Fortran 2008 的功能,并且使用gfortran(因为它是开源的),并且ifort(因为它对非商业用途是免费的)。g95对 Fortran 2003 和 2008 的支持非常有限。

我通常在编译代码时同时使用两个编译器并打开所有警告,而且我常常对其中一个编译器遗漏了哪些错误感到惊讶。在编译代码的性能方面,我从未注意到有什么不同(不包括捆绑的数学库)。

大多数商业上可用的编译器具有非标准扩展,例如OpenACC(例如CrayPGI)或特殊功能(例如PGI CUDA Fortran)和捆绑库(例如Intel MKL)。这些也可能会影响您的选择。对于某些硬件,您可能需要/可能会从特殊的编译器(如Cray编译器)中获益。

编辑:以下是不同编译器和机器的一些基准测试结果。

于 2013-10-06T16:16:02.317 回答