Linux下的Fortran性能优化路线图
一 编译器与构建链
二 代码层面的高效写法
三 性能分析与调优闭环
四 Linux工作流与工具
五 实用命令与最小示例
# 调试构建
gfortran -O0 -g -fcheck=all -fbacktrace -o app_dbg app.f90
# 发布构建(列主序、向量化、架构优化)
gfortran -O3 -march=native -ffast-math -funroll-loops \
-o app_opt app.f90 -lopenblas
# 带报告与PGO的构建流程(Intel)
ifort -O2 -qopt-report -qopenmp -ipo -prof-gen -o app_pgo_gen app.f90
./app_pgo_gen # 采集profile
ifort -O2 -qopt-report -qopenmp -ipo -prof-use -o app_pgo_use app.f90
program vec_add
use omp_lib
implicit none
integer, parameter :: n = 10000000
real :: a(n), b(n), c(n)
integer :: i
a = 1.0; b = 2.0
!$omp parallel do private(i) schedule(static)
do i = 1, n
c(i) = a(i) + b(i)
end do
!$omp end parallel do
print *, 'c(1:5) = ', c(1:5)
end program vec_add
编译与运行:gfortran -O3 -fopenmp -o vec_add_omp vec_add.f90
OMP_NUM_THREADS=8 ./vec_add_omp
# 热点函数采样
perf record -g ./app_opt
perf report
# 整体计时
time ./app_opt