Fortran程序在Linux如何部署
小樊
41
2025-12-25 22:49:42
Linux上部署Fortran程序的实用步骤
一 环境准备与编译器安装
- 安装 GNU Fortran(gfortran):
- Debian/Ubuntu 系:sudo apt update && sudo apt install gfortran
- RHEL/CentOS 系:sudo yum install gcc-gfortran;或 sudo dnf install gcc-gfortran
- 安装后验证:gfortran --version
- 可选:安装 Intel oneAPI 并加载环境(适用于需要 ifort/icx 的场景)
- 安装后执行:source /opt/intel/oneapi/setvars.sh(可写入 ~/.bashrc 持久化)
- 可选:并行与工具
- OpenMP:sudo apt-get install libomp-dev;编译加 -fopenmp
- MPI:sudo apt-get install mpich;编译用 mpif90,运行用 mpiexec/mpirun
- 工程与依赖管理:可使用 FPM(Fortran Package Manager)简化构建与分发
二 构建与运行最小示例
- 源码 hello.f90
- program hello
print *, “Hello, World!”
end program hello
- 编译与运行
- gfortran hello.f90 -o hello
- ./hello
- 多文件/库场景
- 示例:gfortran main.f90 utils.f90 -o app
- 使用外部库:gfortran main.f90 -o app -L/usr/local/lib -lnetcdff -lnetcdf -lhdf5 -lz
- 建议将常用标志放入变量:FFLAGS=“-O2 -g”;LDFLAGS=“-L/usr/local/lib”;LIBS=“-lnetcdff -lnetcdf -lhdf5 -lz”
三 依赖管理与外部库
- 常见数值库:NetCDF、HDF5、BLAS/LAPACK、OpenMP、MPI
- 发行版仓库安装(示例)
- Ubuntu:sudo apt-get install libnetcdf-dev libhdf5-dev libopenmpi-dev libomp-dev
- CentOS/RHEL:sudo yum install netcdf-devel hdf5-devel openmpi-devel(或使用 dnf)
- 源码编译安装后需配置环境(示例)
- 头文件与库路径:export CPPFLAGS=-I/usr/local/include;export LDFLAGS=-L/usr/local/lib
- 运行时库搜索路径:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 写入 ~/.bashrc 后执行 source ~/.bashrc 生效
四 多进程与高性能计算部署
- OpenMP(共享内存)
- 编译:gfortran -fopenmp -o parallel_example parallel_example.f90
- 运行:./parallel_example(可通过 OMP_NUM_THREADS 控制线程数)
- MPI(分布式内存)
- 安装:sudo apt-get install mpich
- 编译:mpif90 -o mpi_example mpi_example.f90
- 运行:mpiexec -n 2 ./mpi_example 或 mpirun -np 2 ./mpi_example
- 建议:在集群/调度系统中使用作业脚本(如 Slurm 的 srun/sbatch),并设置线程/进程绑定与资源请求
五 上线交付与容器化
- 最小化交付物
- 可执行文件(如 app)、必要的 动态库、配置/数据文件、启动脚本(run.sh)、README/使用说明
- 服务器部署流程
- 打包:tar -czvf app.tar.gz app config/ data/
- 上传:scp app.tar.gz user@host:/opt/myapp
- 解压运行:tar -xzvf app.tar.gz && cd myapp && ./run.sh
- 容器化示例(Docker)
- Dockerfile
- FROM centos:latest
- RUN yum update -y && yum groupinstall “Development Tools” -y && yum install -y gfortran
- COPY . /app
- WORKDIR /app
- RUN gfortran -o my_program my_program.f90
- CMD [“./my_program”]
- 构建与运行:docker build -t my-fortran-app .;docker run -it my-fortran-app
- 交付建议
- 使用版本化目录(如 /opt/myapp/1.2.3),保留 app.sha256 校验
- 记录依赖与构建命令(建议用 FPM 管理工程与打包),便于复现与迁移