You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mpif90编译OpenACC+MPI Fortran代码报-acc=gpu选项无法识别错误

OpenACC+MPI Fortran编译报错修复方案

报错根因

你环境中默认的mpif90底层绑定的是GNU Fortran 9.3,该版本gfortran不支持OpenACC专属的-acc系列编译选项,因此会抛出无法识别命令行选项的错误。

具体修复步骤

  • 切换MPI编译器底层绑定为已安装的nvfortran
    MPI的编译器包装器支持指定底层编译器:
    如果你使用的是OpenMPI,编译前执行export OMPI_FC=nvfortran即可临时生效,要永久生效可以将该行写入~/.bashrc后执行source ~/.bashrc
    如果你使用的是MPICH,对应环境变量为MPICH_FC=nvfortran
  • 修改Makefile编译参数适配nvfortran与A6000显卡
    A6000属于安培架构,算力版本为8.6,修改FFLAG为适配参数:
    FC= mpif90
    # 新增-ta参数指定显卡架构,开启统一内存,打印加速编译信息
    FFLAG = -acc=gpu -fast -mcmodel=medium -ta=tesla:cc86,managed -Minfo=accel
    
  • 修正后的完整Makefile参考
    OBJECTS = Main.o Module.o Pre_processing.o boundary_conditions.o \
                  interpolation.o viscous_fluxes.o
    MODULES = Module.mod
    CASE = Riemann.f90
    
    FC= mpif90
    FFLAG = -acc=gpu -fast -mcmodel=medium -ta=tesla:cc86,managed -Minfo=accel
    
    output: a.out
    
    a.out: $(MODULES) $(OBJECTS) cases/$(CASE)
        $(FC) $(FFLAG) $(OBJECTS) cases/$(CASE) -o a.out
    
    %.o: %.f90
        $(FC) $(FFLAG) -c $<
    
    %.mod: %.f90
        $(FC) $(FFLAG) -c $<
    
    .PHONY: clean
    clean :
        rm -f *.o *.mod *.out *.qdrep
    

运行验证

编译完成后,可直接用mpirun -np 2 ./a.out启动双进程对应两块A6000显卡运行,nvfortran编译的OpenACC程序会自动将每个MPI进程绑定到对应本地显卡。

内容的提问来源于stack exchange,提问作者Dumbledore Albus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:05