Was your Open MPI compiled with -r8? We definitely recommend using the same compiler flags to compile Open MPI as your application. As George noted, -r8 can definitely cause issues if one was compiled with it and the other was not.
On May 18, 2020, at 12:24 AM, George Bosilca via users <users@lists.open-mpi.org<mailto:users@lists.open-mpi.org>> wrote: Diego, I see nothing wrong with the way you create the datatype. In fact this is the perfect example on how to almost do it right in FORTRAN. The almost is because your code is highly dependent on the -r8 compiler option (otherwise the REAL in your type will not match the MPI_DOUBLE_PRECISION you provide to MPI_Type_create_struct). Btw you can remove the MPI_Type_commit on the first datatype, you only need to commit types that will be used in communications (not anything that is temporarily used to build other types). George. On Sun, May 17, 2020 at 11:19 AM Diego Avesani via users <users@lists.open-mpi.org<mailto:users@lists.open-mpi.org>> wrote: Dear Gilles, dear All, as far I remember no. The compiler is the same as the options which I use. Maybe, the error is some other places of my code. However, the results look errors in allocation of sent and received vector of datatype. The import is that at least mydata type definitions in correct. These are the options used in compiling: -c -O2 -r8 -align -lmkl_blas95_lp64 -lmkl_lapack95_lp64 -mkl=sequential -fpp -CB Best regards Diego On Sun, 17 May 2020 at 15:27, Gilles Gouaillardet via users <users@lists.open-mpi.org<mailto:users@lists.open-mpi.org>> wrote: Diego, Did you change your compiler options? Cheers, Gilles ----- Original Message ----- > Dear all, > > I would like to share with what I have done in oder to create my own MPI > data type. The strange thing is that it worked until some day ago and then > it stopped working. This because probably I have changed my data type and I > miss some knowledge about MPI data type > > This is my data type: > ****** > TYPE tParticle > SEQUENCE > INTEGER :: ip > INTEGER :: mc > INTEGER :: bcflag > INTEGER :: cpu > REAL :: RP(di) > REAL :: QQ(nVar) > REAL :: UU0(2*(1+di+nVar)) > REAL :: lij > REAL :: lmls > REAL :: vol > REAL :: mm > ENDTYPE tParticle > ****** > > Then I have this variables in order to create mine: > > ****** > INTEGER, ALLOCATABLE,DIMENSION(:) :: TYPES, LENGTHS > INTEGER(MPI_ADDRESS_KIND), ALLOCATABLE,DIMENSION(:) :: DISPLACEMENTS > TYPE(tParticle) :: dummy(2) > ****** > > Having 5 structures: Nstruct=5 > > In the following how I create my MPI data TYPE > > ****** > ALLOCATE(TYPES (Nstruct) ) > ALLOCATE(LENGTHS (Nstruct) ) > ALLOCATE(DISPLACEMENTS (0:nstruct+1)) > !set the types > TYPES(1) = MPI_INTEGER > TYPES(2) = MPI_DOUBLE_PRECISION > TYPES(3) = MPI_DOUBLE_PRECISION > TYPES(4) = MPI_DOUBLE_PRECISION > TYPES(5) = MPI_DOUBLE_PRECISION > !set the lengths > LENGTHS(1) = 4 > LENGTHS(2) = SIZE(dummy(1)%RP) > LENGTHS(3) = SIZE(dummy(1)%QQ) > LENGTHS(4) = SIZE(dummy(1)%UU0) > LENGTHS(5) = 4 > ! > CALL MPI_GET_ADDRESS(dummy(1) ,DISPLACEMENTS(0),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(1)%ip ,DISPLACEMENTS(1),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(1)%RP(1) ,DISPLACEMENTS(2),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(1)%QQ(1) ,DISPLACEMENTS(3),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(1)%UU0(1) ,DISPLACEMENTS(4),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(1)%lij ,DISPLACEMENTS(5),MPIdata%iErr) > CALL MPI_GET_ADDRESS(dummy(2) ,DISPLACEMENTS(6),MPIdata%iErr) > ! > DISPLACEMENTS(1:nstruct+1)= DISPLACEMENTS(1:nstruct+1)-DISPLACEMENTS (0) > ! > CALL > MPI_TYPE_CREATE_STRUCT(nstruct,lengths,DISPLACEMENTS(1:nstruct+1), types,MPI_PARTICLE_TYPE_OLD,MPIdata%iErr) > CALL MPI_TYPE_COMMIT(MPI_PARTICLE_TYPE_OLD,MPIdata%iErr) > ! > CALL MPI_TYPE_CREATE_RESIZED(MPI_PARTICLE_TYPE_OLD, DISPLACEMENTS(1), > DISPLACEMENTS(6), MPI_PARTICLE_TYPE, MPIdata%iErr) > CALL MPI_TYPE_COMMIT(MPI_PARTICLE_TYPE,MPIdata%iErr) > > > Do you see something wrong, maybe related to the DISPLACEMENTS. This > beacuse, As already told you, something has happend and I have just added > " REAL :: mm " > in my type and consequently set "LENGTHS(5) = 4 ". > > What do you think? > Thanks in advance for any kind of help. > > Best, > > Diego > -- Jeff Squyres jsquy...@cisco.com<mailto:jsquy...@cisco.com>