使用gfortran代替mpif90

5

我正在尝试使用makefile编译一个大型求解器。在输入make命令时,会执行以下命令:

mpif90 -O2 -fpp -I/somePath/ -c precision.F90

I get the following error:

gfortran: error: unrecognized command line option ‘-fpp’

我打了which mpif90来查看它所指向的位置:
/usr/local/intel14/impi/4.1.3.048/intel64/bin/mpif90

我尝试手动输入命令,以确保它与makefile无关,但是我得到了相同的错误。为什么会调用gfortran?这一定是某种链接错误,但我想不出来。


1
/usr/local/intel14/impi/4.1.3.048/intel64/bin/mpif90 -v 返回什么? - Vladimir F Героям слава
2
尝试使用 mpiifort 而不是 mpif90 - High Performance Mark
我认为mpif90、mpifort等通常只是相关Fortran编译器的包装器。 - chw21
请使用“-cpp”选项:https://dev59.com/8HDYa4cB1Zd3GeqPDbQk - sailfish009
2个回答

9

这些评论让我走上了正确的道路。我不知道mpif90只是一个包装器。

$ /usr/local/inter14/impi/4.1.3.048/intel64/bin/mpif90 -v
mpif90 for the Intel(R) MPI Library 4.1 for Linux*
Copyright(C) 2003-2014, Intel Corporation.  All rights reserved.
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/local/gcc5.2/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc5.2 --disable-multilib
Thread model: posix
gcc version 5.2.0 (GCC) 

我请代码作者做了同样的事情,输出结果指向英特尔编译器。所以现在需要链接ifort。以下是解决方法(bash shell):

export I_MPI_F90=ifort

在超级计算机和集群上,通常可以使用模块系统在编译器和MPI库之间进行切换。尝试输入“module avail”。 - Vladimir F Героям слава
一个更加永久的解决方案是在Makefile中用mpiifort替换mpif90。环境变量可以解决问题,但是容易出错,因为人们可能会在重新登录时忘记设置它。 - Gilles

0
你可以直接使用另一种选择。
/usr/local/intel14/impi/4.1.3.048/intel64/bin/mpiifort

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