得到机器名
MPI_GET_PROCESSOR_NAME(name, resultlen)
OUT name 当前进程所运行机器的名字
OUT resultlen 返回名字的的长度(以可打印字符的形式)
int MPI_Get_processor_name ( char *name, int *resultlen)
MPI_GET_PROCESSOR_NAME(NAME, RESULTLEN, IERROR)
CHARACTER *(*) NAME
INTEGER RESULTLEN, IERROR

讲解:
在实际使用MPI编写并行程序的过程中,经常要将一些中间结果或最终的结果输出到程序自己创建的文件中,对于在不同机器上的进程,常希望输出的文件名包含该机器名,或者是需要根据不同的机器执行不同的操作,这样仅仅靠进程标识rank是不够的,MPI为此提供了一个专门的调用,使各个进程在运行时可以动态得到该进程所运行机器的名字。MPI_GET_PROCESSOR_NAME调用返回调用进程所在机器的名字。

得到版本号

MPI_GET_VERSION(version, subversion)
OUT version
OUT subversion
int MPI_Get_version(int * version, int * subversion)
MPI_GET_VERSION(VERSION, SUBVERSION,IERROR)
INTEGER VERSION, SUBVERSION, IERROR

讲解:
MPI_GET_VERSION返回MPI的主版本号version和次版本号subversion。MPI虽然有很强的移植性,但是在不同的版本之间确实存在着实现的差异,可以根据得到的版本号了解MPI的运行环境的具体信息。

program main
include 'mpif.h'
character*(MPI_MAX_PROCESSOR_NAME) name
integer resultlen, version, subversion, ierr

call MPI_Init( ierr )
name = " "
C 首先将名字赋为空

call MPI_Get_processor_name( name, resultlen, ierr )
C 得到机器的名字name和该名字的字符长度resultlen
call MPI_GET_VERSION(version, subversion,ierr)
C 得到MPI的版本号
errs = 0
do i=resultlen+1, MPI_MAX_PROCESSOR_NAME
if (name(i:i) .ne. " ") then
C 若返回的名字name的resultlen后还有非空字符,则认为该名字有错误
errs = errs + 1
endif
enddo
if (errs .gt. 0) then
print *, 'Non-blanks after name'
else
print *, name, " MPI version",version, ".", subversion
endif
call MPI_Finalize( ierr )
end