dear all,

I have a problem with MPI_Type_Create_Struct and MPI_TYPE_CREATE_RESIZED.

I have this variable type:

*  TYPE tParticle*
*     INTEGER  :: ip*
*     REAL     :: RP(2)*
*     REAL     :: QQ(2)*
*  ENDTYPE tParticle*

Then I define:

Nstruct=3
*ALLOCATE(TYPES(Nstruct))*
*ALLOCATE(LENGTHS(Nstruct))*
*ALLOCATE(DISPLACEMENTS(Nstruct))*
*!set the types*
*TYPES(1) = MPI_INTEGER*
*TYPES(2) = MPI_DOUBLE_PRECISION*
*TYPES(3) = MPI_DOUBLE_PRECISION*
*!set the lengths*
*LENGTHS(1) = 1*
*LENGTHS(2) = 2*
*LENGTHS(3) = 2*

As gently suggested by Nick Papior Andersen and George Bosilca some months
ago, I checked the variable adress to resize my struct variable to avoid
empty space and
to have a more general definition.

* !*
* CALL MPI_GET_ADDRESS(dummy%ip,    DISPLACEMENTS(1), MPI%iErr)*
* CALL MPI_GET_ADDRESS(dummy%RP(1), DISPLACEMENTS(2), MPI%iErr)*
* CALL MPI_GET_ADDRESS(dummy%QQ(1), DISPLACEMENTS(3), MPI%iErr)*
* !*
* CALL
MPI_Type_Create_Struct(Nstruct,LENGTHS,DISPLACEMENTS,TYPES,MPI_PARTICLE_TYPE_OLD,MPI%iErr)*
* CALL MPI_Type_Commit(MPI_PARTICLE_TYPE_OLD,MPI%iErr)*
* !*
* CALL MPI_TYPE_CREATE_RESIZED(MPI_PARTICLE_TYPE_OLD,
DISPLACEMENTS(1),DISPLACEMENTS(2) - DISPLACEMENTS(1), MPI_PARTICLE_TYPE)*


This does not work. When my program run, I get an error:

*forrtl: severe (174): SIGSEGV, segmentation fault occurred.*

I have read the manual but probably I am not able to understand
*MPI_TYPE_CREATE_RESIZED. *

Someone could help me?


Thanks a lot
Diego


Diego

Reply via email to