[mpich-discuss] How to use MPI_TYPE_CREATE_F90_REAL
Jilong Yin
yinjilong at gmail.com
Mon Apr 5 22:24:11 CDT 2010
Hello, everyone
I am modifying my program to be used in user-specified real precision such
as single/double/quad precision.
I use Fortran (Intel fortran)
But when I make the following test program, it failed and reported as
this,.
Fatal error in PMPI_Bcast: Invalid datatype, error stack:
PMPI_Bcast(1301): MPI_Bcast(buf=0012FEE8, count=1, dtype=USER<f90_real>,
root=0
MPI_COMM_WORLD) failed
PMPI_Bcast(1252): Datatype has not been committed
I searched the web but can find little about this MPI_TYPE_CREATE_F90_REAL,
Anyone can help me out?
Thank you.
ccccccccccccccccccccccccccccccccccccccccc
PROGRAM TEST
IMPLICIT NONE
INCLUDE "MPIF.h"
C Define real type in different precision
INTEGER,PARAMETER::SP=SELECTED_REAL_KIND(6,37)
INTEGER,PARAMETER::DP=SELECTED_REAL_KIND(15,307)
INTEGER,PARAMETER::QP=SELECTED_REAL_KIND(33,4931)
INTEGER MYID,NUM_PROCS,IERR
C MPI REAL DATA TYPE
INTEGER MPI_REAL_SP,MPI_REAL_DP,MPI_REAL_QP
REAL(KIND=SP)::s
REAL(KIND=DP)::d
REAL(KIND=QP)::q
C Initialize MPI enviroment
CALL MPI_INIT(IERR)
C get my Rank ID
CALL MPI_COMM_RANK(MPI_COMM_WORLD,MYID,IERR)
C get the number of procs
CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NUM_PROCS,IERR)
C Output the precision and range for each real type
WRITE(6,10)PRECISION(1.0_SP),RANGE(1.0_SP),
& PRECISION(1.0_DP),RANGE(1.0_DP),
& PRECISION(1.0_QP),RANGE(1.0_QP)
C Define MPI REAL Type
CALL MPI_TYPE_CREATE_F90_REAL(6,MPI_UNDEFINED,MPI_REAL_SP,IERR)
CALL MPI_TYPE_CREATE_F90_REAL(15,MPI_UNDEFINED,MPI_REAL_DP,IERR)
CALL MPI_TYPE_CREATE_F90_REAL(33,MPI_UNDEFINED,MPI_REAL_QP,IERR)
c test real type
IF(MYID.EQ.0) THEN
s=1.0_SP
d=2.0_DP
q=3.0_QP
END IF
c broadcast the above 3 values from master node
CALL MPI_BCAST(s,1,MPI_REAL_SP,0,MPI_COMM_WORLD,IERR)
CALL MPI_BCAST(d,1,MPI_REAL_DP,0,MPI_COMM_WORLD,IERR)
CALL MPI_BCAST(q,1,MPI_REAL_QP,0,MPI_COMM_WORLD,IERR)
C output the result
PRINT*,'MyID=',MYID,' s=',s,' d=',d,' q=',q
C finish the mpi enviroment
CALL MPI_FINALIZE(IERR)
STOP
10 FORMAT('REAL PRECISION: SP(',I2,',',I4,')',1X,
& 'DP(',I2,',',I4,')',1X,
& 'QP(',I2,',',I4,')')
END
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20100406/741c2d95/attachment.htm>
More information about the mpich-discuss
mailing list