Intel Fortran编译工具ifort和ifx
注意⚠️:
Intel® Fortran Compiler Classic (ifort) is discontinued as of this release (version 2025.0).1
1. 简介
-
Intel® Fortran Compiler Classic (IFORT):传统的 Fortran 编译器,支持经典的 Fortran 标准(如 Fortran 77、90、95、2003、2008)
-
Intel® Fortran Compiler (IFX):新一代基于 LLVM 框架的 Fortran 编译器,支持最新的 Fortran 标准(如 Fortran 2018 和未来版本)
Intel® oneAPI 工具包包括了IFORT
和IFX
。
2. ifort 选项
ifort
成熟:适合需要完全兼容现有 Fortran 代码的场景。
基础选项:
-c
:只进行编译,生成目标文件(.o),不进行链接-o <filename>
:指定生成的可执行文件名称-I<directory>
:指定模块文件(.mod 文件)或头文件的搜索路径-L<directory>
和-l<library>
:指定库的搜索路径和链接库-static
:生成静态链接的可执行文件,避免依赖动态库
优化选项:
-O0
:关闭优化(默认设置,适合调试)-O1
:基础优化,适合对编译时间敏感或有大量分支的代码-O2
:通用优化(推荐),优化循环、不变代码外提、指令调度等-O3
:高等级优化,适合需要最大化性能的程序,包括计算密集型程序、矢量化和内存访问优化-xHost
:生成专为运行平台优化的代码,针对本地 CPU 的特定架构优化-ipo
:启用跨文件优化(Interprocedural Optimization),进一步提升性能-fast
:启用多项性能优化选项(-O3
、-ipo
、-xHost
等)
并行化和矢量化选项:
-parallel
:启用自动并行化功能,适合多核 CPU-qopenmp
:启用 OpenMP 支持,需要代码中包含 OpenMP 指令-coarray
:启用 Fortran Coarray 支持(需要 Fortran 2008 标准)-reduction
:优化特定的并行循环归约操作-vec
:启用矢量化优化(默认启用)-fma
:启用 Fused Multiply-Add 指令以提升浮点计算效率(如果硬件支持)
调试选项:
-g
:生成调试信息,用于 GDB 或 Visual Studio 调试。-traceback
:在程序崩溃时生成函数调用堆栈信息,有助于定位问题-check
:检查代码中的潜在问题-check all
:启用所有检查(数组越界、未初始化变量等)-check bounds
:检查数组下标越界-check uninit
:检查未初始化变量
-warn
:控制编译器警告-warn all
:启用所有警告-warn none
:禁用所有警告-warn unused
:警告未使用的变量
语言标准相关:
-stand
:检查代码是否符合特定的 Fortran 标准-stand f77
:检查 Fortran 77 标准-stand f95
:检查 Fortran 95 标准-stand f08
:检查 Fortran 2008 标准
-free
:以自由格式解析源代码(默认支持.f90
文件)。-fixed
:以固定格式解析源代码(默认支持.f
文件)
高级选项:
-reentrancy
:控制线程安全模式-reentrancy threaded
:启用多线程模式-reentrancy none
:关闭多线程模式
-heap-arrays
:将大数组分配到堆中而不是栈中-fpp
:启用 Fortran 预处理器,允许使用宏定义(类似于 C 的#define
等)-module <dir>
:指定生成的.mod
文件存放路径
链接相关:
-shared
:生成动态库(共享库)-static
:生成静态链接的可执行文件-nolib-inline
:禁用内联库代码优化
错误处理和诊断:
-diag-enable
和-diag-disable
:控制特定诊断信息的显示-diag-file <filename>
:将诊断信息输出到指定文件
其他实用选项:
-qopt-report
:生成优化报告,便于分析编译器的优化行为-save
:将所有局部变量设为静态存储(与 Fortran 77 中的行为类似)-zero
:将未初始化变量初始化为 0(仅用于调试)
3. ifx 选项
ifx
适合现代化应用:比如异构计算、GPU 支持和最新 Fortran 特性。基本选项同ifort。不同点如下:
优化选项:
-march=<arch>
:针对指定架构优化(如x86-64
,skylake
,cascadelake
等)-fma
:启用 Fused Multiply-Add(硬件支持时),提升浮点计算性能
GPU 和异构计算:
-fsycl
:启用 SYCL 支持,用于 oneAPI GPU 编程-offload=<device>
:指定代码运行的目标设备(如cpu
,gpu
等)-fiopenmp-targets
:针对 OpenMP target 并行运行,支持 GPU 或其他设备
语言标准相关:
-stand
:检查代码是否符合特定的 Fortran 标准-stand f18
:检查 Fortran 2018 标准(默认支持)-stand f08
:检查 Fortran 2008 标准
预处理器选项:
-fpp
:启用 Fortran 预处理器,支持宏定义等
其他实用选项:
-qopt-zmm
:启用宽矢量寄存器优化(适合 AVX-512 支持的硬件)
4. 常用场景编译示例
开启调试模式:
ifort -g -traceback -check all source.f90 -o debug_program
生成高性能程序:
ifort -O3 -ipo -xHost source.f90 -o fast_program
并行化:
ifort -qopenmp -parallel -O3 source.f90 -o parallel_program
启用 OpenMP 并行:
ifort -qopenmp source.f90 -o parallel_program
检测潜在错误:
ifort -check all -warn all -g source.f90 -o safe_program
编译静态库:
ifort -c module1.f90 module2.f90
ar rcs libmylib.a module1.o module2.o
- 使用
-c
编译为目标文件(.o
)。 - 使用
ar
创建静态库。
链接外部库:
ifort program.f90 -L/path/to/library -lmylib -o linked_program
-L
:指定库路径。-l
:链接库名称。
执行程序:编译完成后,运行生成的可执行文件
./output
调试代码:
ifx -g -traceback -check all source.f90 -o debug_program
性能优化:
ifx -O3 -ipo -xHost source.f90 -o optimized_program
启用 GPU 加速:
ifx -fsycl source.f90 -o gpu_program
生成共享库:
ifx -shared -o libmylib.so source.f90