GNU Fortran 体系结构相关的编译器选项

GNU Fortran architecture dependent compiler option

是否有 GNU Fortran 编译器 (v5.3.0) 选项可以针对特定架构调整代码?我对 Intel Core i7 特别感兴趣。我在 GNU Fortran 5.3.0 Option Summary 的官方选项摘要中找不到任何与代码调优相关的内容。记得以前有一个选项-march=...。谢谢。

编辑:

我已经找到 cat /proc/cpuinfo 的处理器架构并访问 Intel CPU Specifications website 发现我有 Sandy Bridge CPU。在我的例子中,正确的 GNU 选项是 -march=sandybridge.

我假设 -march=native 不起作用?

编辑:尝试使用 gcc 5.3 的 hello world,它确实使用该选项进行编译,但不知道它是否有所改进。

i7 不是架构,SandyBridge、IvyBridge、Haswell 等是 Intel CPUs 的架构。所有这些架构都可以销售 i3、i5、i7 或 Xeon 变体。

你可以有两台 i7 CPU,一台旧一台新,它们可以有不同的架构。

在 GCC 中(C、C++、Fortran...的整个套件)有选项 -march-mtune(参见 https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html#x86-Options)与 march 编译代码只会 运行 在指定的架构和更新的架构上。使用 mtune 它将 运行 用于旧的,但会以某种方式针对指定的进行优化。

您可以使用 native,编译器将使用您当前 CPU 的体系结构。或者您可以手动指定一些体系结构,例如 -march=haswell-march=ivybridge-march=core-avx-i.

请注意,您需要最新版本的编译器才能针对新的 CPU 架构进行优化。

您要查找的所有信息都在 gcc 的手册页中,而不在 gfortran 的手册页中:

man gcc