Tags openmpi/2.1.1的MPI标签
我正在尝试获取openmpi的参数MPI_TAG_UB(我使用的是版本2.1.1)。我知道我需要使用常规的MPI_COMM_GET_ATTR,但我不知道如何做到这一点,我一生中从未使用过Fortran。接下来,我尝试了以下方法:Tags openmpi/2.1.1的MPI标签,tags,fortran,mpi,openmpi,Tags,Fortran,Mpi,Openmpi,我正在尝试获取openmpi的参数MPI_TAG_UB(我使用的是版本2.1.1)。我知道我需要使用常规的MPI_COMM_GET_ATTR,但我不知道如何做到这一点,我一生中从未使用过Fortran。接下来,我尝试了以下方法: LOGICAL FLAG INTEGER IERR INTEGER (KIND=MPI_ADDRESS_KIND) VALUE ! Upon successful return, VALUE == 7 (sign extended) CALL MPI_COMM_
LOGICAL FLAG
INTEGER IERR
INTEGER (KIND=MPI_ADDRESS_KIND) VALUE
! Upon successful return, VALUE == 7 (sign extended)
CALL MPI_COMM_GET_ATTR(MPI_COMM_WORLD, KEYVAL, VALUE, FLAG, IERR)
我把它放在一个文件test.f90
,然后
gfortran test.f90 -o test.out
但我得到了这个错误信息:
错误:(1)处的参数“mpi\u address\u kind”尚未声明或是一个变量,该变量未简化为常量表达式
错误:“test.f90”中的文件意外结束
所以基本上我不知道我在做什么。有人曾经为某些MPI实现检索过MPI_标记_UB的值吗
谢谢 Fortran不知道什么是
MPI\u COMM\u GET\u ATTR
,您需要使用它。看起来你应该参考一本fortran初学者的书,然后学习如何在书中使用MPI。我好心地说,你有点不知所措了。学习基本Fortran应该很容易,但MPI不是Fortran的一部分。您不理解这一点,因为您试图使用gfortran进行编译。您将使用MPI包装器编译器进行编译。MPI还有许多未在链接中解释的需求。您应该首先学习基本的MPI实现。您在这里提出的有关堆栈溢出的问题不合适,因为这不是一个教程站点。我建议您查找有关Fortran和MPI的教程。这个问题不是直接使用编译器而不是MPI包装器造成的。正如@Ross已经解释的,您首先需要使用mpi
(或者包括'mpif.h'
或者使用mpi\u f08
)。