在 CentOS 上感觉 Fortran 程序很慢,通常不是 Fortran 语言本身的问题,而是环境、编译方式或系统配置导致的。下面按常见原因给你梳理一下:
很多人在 CentOS 上直接这样编译:
gfortran test.f90 -o test
这样是 没有优化 的,速度可能只有优化后的 1/5~1/10。
✅ 正确做法:
gfortran -O2 test.f90 -o test
# 或
gfortran -O3 -march=native test.f90 -o test
-O2 / -O3:开启优化-march=native:针对当前 CPU 优化如果你用 Fortran 做科学计算(矩阵、线性代数),是否链接了高效 BLAS 非常关键。
❌ 默认情况:
libblas 是未优化版本✅ 推荐:
sudo yum install openblas-devel
gfortran test.f90 -lopenblas
OpenBLAS 通常比系统默认 BLAS 快 5~20 倍。
CentOS 7 的 gfortran:
✅ 解决方案:
devtoolsetsudo yum install centos-release-scl
sudo yum install devtoolset-11
scl enable devtoolset-11 bash
gfortran --version
Fortran 本身很快,但:
✅ 方法:
gfortran -fopenmp test.f90 -o test
Fortran 的 write/read 如果不注意:
✅ 建议:
write(10) a
CentOS 设计目标是:
所以:
这会让“新代码跑旧系统”显得慢。
如果你和以下环境比:
CentOS 老环境确实会慢。
你可以先确认:
gfortran --version
cat /proc/cpuinfo | grep -c processor
ldd your_program | grep blas
如果你愿意,可以:
我可以直接告诉你具体慢在哪、怎么改最快。