温馨提示×

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 管理工程与打包),便于复现与迁移

0