[mpich-discuss] How to use MPI_TYPE_CREATE_F90_REAL

Rajeev Thakur thakur at mcs.anl.gov
Mon Apr 5 22:41:07 CDT 2010


Looks like this is a bug in MPICH2. It is saying that the datatype is
not committed, whereas the datatype returned by type_create_f90_real is
a predefined datatype that does not need to be committed. I have filed a
bug report. You can try it here:
https://trac.mcs.anl.gov/projects/mpich2/ticket/1028
 
Rajeev


  _____  

From: mpich-discuss-bounces at mcs.anl.gov
[mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Jilong Yin
Sent: Monday, April 05, 2010 10:24 PM
To: mpich-discuss at mcs.anl.gov
Subject: [mpich-discuss] How to use MPI_TYPE_CREATE_F90_REAL


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/20100405/f2382ded/attachment-0001.htm>


More information about the mpich-discuss mailing list