- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
介绍
我了解英特尔的 Fortran 编译器 ifort
执行一些函数内联和 interprocedural optimization (IPO) ,以及其他标准优化。这可以按照以下示例完成:
ifort -O2 -finline-functions -ipo myProgram.f function.f subroutine.f -o MyProgram
-O2
标志告诉编译器执行重要的优化(对于 Fortran,包括函数内联)。 -finline-functions
标志告诉编译器允许函数内联。-ipo
flag 告诉编译器执行 IPO。 ifort -O2 -ipo -c function.f -o function.o
ifort -O2 -ipo -c subroutine.f -o subroutine.o
ifort -O2 -ipo -c myProgram.f -o myProgram.o
ifort -O2 -finline-functions -ipo myProgram.o function.o subroutine.o -o MyProgram
最佳答案
使用 -ipo 编译时,编译器会生成中间代码,但根本不进行优化或内联。您有 .o 文件,但它们不包含任何机器指令。当您再次调用 ifort 以创建可执行文件时,编译器会吸收所有中间代码并对其进行优化,就好像您已将所有内容编译到一个大源文件中一样。然后,它可以查看引用了哪些例程以及在何处引用,并且可以进行更多优化和内联。
您应该为每次编译传递相同的优化选项 - 它们与中间代码一起记录。
我很确定具有类似功能的其他编译器也是如此。 (我是前英特尔编译器开发/支持工程师。)
关于optimization - ifort 什么时候使用优化标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49202362/
所以似乎有一些关于 gfortran 的线宽限制的问题,但没有一个关于 ifort 的问题。我在编译时遇到以下问题: ../../../src/70_gw/gwls_lineqsolver.F90(2
介绍 我了解英特尔的 Fortran 编译器 ifort执行一些函数内联和 interprocedural optimization (IPO) ,以及其他标准优化。这可以按照以下示例完成: ifor
请考虑以下代码 module t_test implicit none type ttt(tsize) integer, len :: tsize
这个程序崩溃了 Illegal instruction: 4在 MacOSX Lion 和 ifort (IFORT) 12.1.0 20111011 上 program foo real
有几个关于 SO 的精彩讨论已经涵盖了如何在 Linux 上生成可执行共享库: 见 https://unix.stackexchange.com/questions/7066 和 building a
显然,Fortran 编译器中允许的连续行数存在限制。我有一个临时的病态案例(为了快速测试目的而制作),我需要在不打开文件或做任何欺骗的情况下初始化一个巨大的数组,只需将数据作为文字输入即可。该数组相
以下内容适用于 gfortran 或 f95,但不适用于 ifort: interface add procedure addr, addi end interface add
我突然得到了一些非常旧的 Fortran 代码来编译并开始为我的研究小组工作。使用 ifort 编译代码时出现以下错误:错误 #6526:从相应的内部共享-do-构造的范围之外发生了到 do-term
我认为我在 ifort 2015 中观察到一个错误。 $> ifort test.f90 -O1 -g && ./a.out 6 0 0 0 0 0 0 1 0 $> ifort test.f90
gcc 和 cl 是否有 ifort 的等效项 real-size编译器标志?如果没有,我应该用什么来代替?宏观? #ifdef DOUBLE_PRECISION #define REAL dou
我有一个场景,我希望编译器将浮点值舍入为零或负无穷大。它只需要通过编译器选项来完成,我无法找到与此相关的任何编译器选项,因为类似的方法可用于 AIX 平台的 xlf 编译器。 有没有办法在 Linux
我能够编译目标文件“.o”并将其输出到我的“obj”文件夹中。但是,我无法将“.mod”放入我的“mod”文件夹中。以下是我当前的命令: ifort -c foo.f90 -o../obj/foo.o
为什么在这里 ifort 和 gfortran 之间有不同的行为?使用 ifort 编译它返回 false,使用 gfortran 编译返回 true。我之前在自己的代码中遇到过这个问题,并决定改用子
在评估一个带指数后跟乘法的简单表达式时,我在 Portland 和 Intel fortran 编译器之间得到了不同的行为。根据我对运算符优先级的理解,我很确定 pgf90(和 gfortran)可以
如果我在 ifort 中使用 -O0 编译,程序可以正常运行。但是只要我打开优化选项,比如-O,-O3,-fast,就会出现SIGSEGV段错误。 此错误发生在名为 maketable() 的子例程中
嗯,我遇到了这个问题(描述很长,但我认为很容易解决)。我有三个文件: nrtype.f90,它有一些愚蠢的定义,但它被以下文件使用: module nrtype integer, parame
最近看了一篇post on Stack Overflow关于找到完全平方的整数。由于我想玩这个,我写了以下小程序: PROGRAM PERFECT_SQUARE IMPLICIT NONE INTEG
我有两个第 3 方库 A.so 和 B.so,我将与我的可执行文件 executable.exe 链接在一起。 A.so 包含一个由 B.so 解决的错误,也就是说: A::subroutine1()
在英特尔论坛上将此作为编译器错误报告之前,我想知道以下是否符合标准。我的问题是:逻辑运算的顺序在 Fortran 中总是固定的吗? ! main.f90 interface subrou
我正在尝试将程序从 gfortran 移植到 ifort(英特尔 Fortran 编译器 11)。我被两个只能用 gfortran 编译的文件卡住了: gfortran -x f77 -c daedr
我是一名优秀的程序员,十分优秀!