在 Ubuntu 上“优化 Fortran”通常可以从编译器选择与参数、系统与环境、代码层面、并行与数学库、性能分析几个方面来做。下面按实用顺序说明。
Ubuntu 常见 Fortran 编译器:
安装示例:
sudo apt update
sudo apt install gfortran
Intel 编译器(可选):
# 从 Intel 官网安装 oneAPI,然后:
source /opt/intel/oneapi/setvars.sh
gfortran -O3 -march=native -funroll-loops \
-ffast-math -ftree-vectorize \
your_code.f90 -o your_prog
说明:
-O3:高级优化-march=native:针对本机 CPU-ffast-math:牺牲严格 IEEE 精度换速度(谨慎)-funroll-loops:循环展开ifort -O3 -xHost -ipo -vec -static-intel your_code.f90 -o your_prog
sudo apt install libblas-dev liblapack-dev
使用 OpenBLAS(更快):
sudo apt install libopenblas-dev
编译时:
gfortran main.f90 -lopenblas
sudo apt install libfftw3-dev
代码中:
!$OMP PARALLEL DO
do i = 1, n
a(i) = b(i) * c(i)
end do
!$OMP END PARALLEL DO
编译:
gfortran -O3 -fopenmp code.f90 -o code
运行:
export OMP_NUM_THREADS=8
./code
sudo apt install openmpi-bin libopenmpi-dev
implicit noneallocatable 而非固定大数组示例(推荐):
real, allocatable :: a(:,:)
allocate(a(n,m))
gfortran -pg code.f90 -o code
./code
gprof code gmon.out > report.txt
sudo perf record ./code
sudo perf report
sudo cpufreq-set -g performance
gfortran -O3 -march=native -funroll-loops \
-fopenmp main.f90 -lopenblas -o sim
如果你愿意,可以:
我可以直接帮你做针对性优化方案。