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
是否有 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