如何使用gfortran编译MPI而不是ifort?

5
以前曾经有类似的问题,但回答并没有直接解决我的问题。我正在尝试在高性能计算机上编译基于Fortran的应用程序。该计算机安装了gfortanifort并提供了路径。当我使用MPI(Open MPI 1.8.8)包装器mpifort时,它会自动使用ifort,这很好。但因为某种原因,我想要使用gfortran。我该如何确保mpifort包装器默认使用gfortran而不是ifort

4
如果没有提供MPI实现名称和版本,这个问题就几乎没有意义。但要注意,Intel Fortran和GNU Fortran具有不兼容的模块文件格式,并且使用自己的Fortran运行时库。如果MPI库是使用Intel Fortran构建的,则无法从GNU Fortran中使用它(F77接口,即 include 'mpi.h'可能可以工作,但强烈不建议使用)。 - Hristo Iliev
2个回答

5

Open MPI的mpifort默认使用的Fortran编译器是从$ompi_root/share/openmpi/mpifort-wrapper-data.txt读取的。构建过程将存储在那里选择构建库时选定的Fortran编译器。可以通过设置OMPI_FC环境变量来覆盖它。对于C包装器(OMPI_CC)和C++包装器(OMPI_CXX),同样适用。

示例:

$ mpifort -showme:command
ifort
$ env OMPI_FC=gfortran mpifort -showme:command
gfortran

请记住,与C和C++不同,Intel在Fortran ABI方面与GCC存在分歧。

0

mpifort -fc=gfortran main.f90 (或其他您要编译的文件)也可以帮助更改编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接