Dear Nick, thank you, The important things is that the MPI_TYPE_CREATE_STRUCT works.
Now I will proceed with the debug by myself, I will check MPI_TYPE_CREATE_STRUCT ierr output and other part of my program. Again thanks you Diego On 3 October 2014 15:45, Nick Papior Andersen <nickpap...@gmail.com> wrote: > Well it says > > MPI_ERR_TYPE: invalid datatype > > so I guess you have done something wrong. ;) > > You should debug as much as you can your self. > 1) Check that your type-creation calls actually proceed as expected > 2) Check that your type-commit actually proceed as expected > 3) Telling us that "it is not working" does not tell us anything! You have > probably changed the code several times since you started with some > corrections, hence we cannot see if you have introduced other errors. > > 2014-10-03 13:38 GMT+00:00 Diego Avesani <diego.aves...@gmail.com>: > >> Dear Nick, >> after that I call: >> >> CALL MPI_Sendrecv(P_SEND,nptSend,MPI_PARTICLE_TYPE,BCPU,201,& >> >> P_RECV,nptSend,MPI_PARTICLE_TYPE,TCPU,201,& >> >> MPI_COMM_WORLD,MPI_STATUS_IGNORE,MPI%iErr) >> >> but I have the following error >> >> [diedroLap:16824] *** An error occurred in MPI_Sendrecv >> [diedroLap:16824] *** reported by process >> [139856324001793,139852725092354] >> [diedroLap:16824] *** on communicator MPI_COMM_WORLD >> [diedroLap:16824] *** MPI_ERR_TYPE: invalid datatype >> [diedroLap:16824] *** MPI_ERRORS_ARE_FATAL (processes in this >> communicator will now abort, >> [diedroLap:16824] *** and potentially your MPI job) >> >> Do you know something about this errors? >> >> Thanks again >> >> Diego >> >> >> On 3 October 2014 15:29, Nick Papior Andersen <nickpap...@gmail.com> >> wrote: >> >>> Yes, I guess this is correct. Testing is easy! Try testing! >>> As I stated, I do not know enough about the custom type in MPI, this was >>> my hunch feeling... >>> >>> 2014-10-03 13:23 GMT+00:00 Diego Avesani <diego.aves...@gmail.com>: >>> >>>> Dear Nick, >>>> thanks again. >>>> After reading your post I have thought to compile as >>>> >>>> mpif90 -r8 *.f90 >>>> >>> >>> >>>> and to have this type variable >>>> >>>> TYPE tParticle >>>> SEQUENCE >>>> INTEGER :: ip >>>> INTEGER :: fake >>>> REAL :: RP(2) >>>> REAL :: QQ(4) >>>> END TYPE tParticle >>>> >>>> where I use fake to have 4 + 4 bytes, and then I have >>>> TYPES(1)=MPI_INTEGER >>>> TYPES(2)=MPI_DOUBLE_PRECISION >>>> TYPES(3)=MPI_DOUBLE_PRECISION >>>> nBLOCKS(1)=2 >>>> nBLOCKS(2)=2 >>>> nBLOCKS(3)=4 >>>> >>>> Am I wrong? Do I have correctly understood? >>>> >>> >>> Really Really thanks >>>> >>>> >>>> Diego >>>> >>>> >>>> On 3 October 2014 15:10, Nick Papior Andersen <nickpap...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> >>>>> 2014-10-03 13:00 GMT+00:00 Diego Avesani <diego.aves...@gmail.com>: >>>>> >>>>>> Dear all, dear Nick, >>>>>> thanks lot. >>>>>> I have understood something, so I have create this variable type: >>>>>> >>>>>> TYPE tParticle >>>>>> SEQUENCE >>>>>> INTEGER :: ip >>>>>> INTEGER :: fake >>>>>> REAL :: RP(2) >>>>>> REAL :: QQ(4) >>>>>> END TYPE tParticle >>>>>> >>>>> But did it work? :) Remember to tell mpi about the padding (add one >>>>> more type). >>>>> Also, for cosmetic reasons I would do this: >>>>> TYPE tParticle >>>>> sequence >>>>> integer :: ip >>>>> real :: rp(2), qq(4) >>>>> ! THIS IS A PADDING VARIABLE (SHOULD NEVER BE USED) >>>>> integer :: pad >>>>> end type >>>>> >>>>>> >>>>>> In the point number 2, do you mean to insert some align options? >>>>>> >>>>> Search around for your compiler. However, this will be "forcing" your >>>>> program to certain compilers, I would not recommend this (unless you have >>>>> specific reasons anyway). >>>>> >>>>>> >>>>>> For the point number 3, I do not understand where where I am wrong. >>>>>> This is my code >>>>>> >>>>>> >>>>>> TYPES(1)=MPI_INTEGER >>>>>> >>>>> Here it is wrong. >>>>> If you compile with -i8 your integer is not an integer, but a long. >>>>> Your displacements should be correct, but not your designation of the >>>>> data-type for mpi. >>>>> >>>>>> >>>>>> TYPES(2)=MPI_DOUBLE_PRECISION >>>>>> TYPES(3)=MPI_DOUBLE_PRECISION >>>>>> nBLOCKS(1)=2 >>>>>> nBLOCKS(2)=2 >>>>>> nBLOCKS(3)=4 >>>>>> >>>>>> DISPLACEMENTS(1)=0 >>>>>> DISPLACEMENTS(2)=sizeof(dummy%ip)+sizeof(dummy%fake) >>>>>> >>>>>> >>>>>> DISPLACEMENTS(3)=sizeof(dummy%ip)+sizeof(dummy%fake)+sizeof(dummy%RP(1))+sizeof(dummy%RP(2)) >>>>>> >>>>>> CALL >>>>>> MPI_TYPE_CREATE_STRUCT(3,nBLOCKS,DISPLACEMENTS,TYPES,MPI_PARTICLE_TYPE,MPI%ierr) >>>>>> >>>>>> This is how I compile >>>>>> >>>>>> mpif90 -r8 *.f90 >>>>>> >>>>> No, that was not what you said! >>>>> You said you compiled it using: >>>>> mpif90 -r8 -i8 *.f90 >>>>> >>>>> >>>>>> Again, really really Thanks >>>>>> >>>>>> Diego >>>>>> >>>>>> >>>>>> On 3 October 2014 14:30, Nick Papior Andersen <nickpap...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> I would never compile a fortran program relying on a specific >>>>>>> compiler option! I would never use r8/i8! >>>>>>> I would highly encourage you to explicitly set the precision of each >>>>>>> variable if you need specific variable precision. There are plenty of >>>>>>> tutorials around for this (selected_real/int_kind). >>>>>>> >>>>>>> Secondly, the warning of mis-alignment is due to the data type not >>>>>>> being a multiple of 8. You can pad it with additional bytes to reach a >>>>>>> multiple of 8 (in this case add a fake integer, or character(len=4)). >>>>>>> I do not know if sequence is needed for the mpi data type (I guess >>>>>>> it is needed when dealing with arrays of types, but again, I am not >>>>>>> fully >>>>>>> sure about this...). >>>>>>> >>>>>>> A couple of options: >>>>>>> 1) I think sequence should work if you pad it to align with 8 bytes. >>>>>>> 2) add code that is directive specified against the compiler to tell >>>>>>> the exact alignment of the data type >>>>>>> 3) Your compilation of -r8 -i8 does probably not work due to the >>>>>>> integer being long, and hence your data type of MPI_INTEGER (you did not >>>>>>> tell us whether you corrected this) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2014-10-03 11:07 GMT+00:00 Diego Avesani <diego.aves...@gmail.com>: >>>>>>> >>>>>>>> Dears, >>>>>>>> First of all. Really really thanks for you help, I am learning a >>>>>>>> lot. >>>>>>>> Second: >>>>>>>> I try to study the MPI_TYPE_CREATE_STRUCT and all the things look >>>>>>>> correct. >>>>>>>> >>>>>>>> I use Intel Fortran compiler and when I compile with -r8 means that >>>>>>>> I am compiling in double precision. >>>>>>>> >>>>>>>> About Nick suggestion: >>>>>>>> Coding >>>>>>>> >>>>>>>> TYPE tParticle >>>>>>>> SEQUENCE >>>>>>>> INTEGER :: ip >>>>>>>> REAL :: RP(2) >>>>>>>> REAL :: QQ(4) >>>>>>>> END TYPE tParticle >>>>>>>> >>>>>>>> >>>>>>>> if I compile with >>>>>>>> mpif90 -r8 *.f90 >>>>>>>> >>>>>>>> I get the following error: >>>>>>>> warning #6379: The structure contains one or more misaligned >>>>>>>> fields. [TPARTICLE] TYPE tParticle >>>>>>>> >>>>>>>> >>>>>>>> I can only compile as: >>>>>>>> mpif90 -r8 -i8 *.f90 >>>>>>>> >>>>>>>> But I get the same error: >>>>>>>> >>>>>>>> An error occurred in MPI_Cart_create >>>>>>>> [diedroLap:12267] *** reported by process >>>>>>>> [139817172008961,139814070386689] >>>>>>>> [diedroLap:12267] *** on communicator MPI_COMM_WORLD >>>>>>>> [diedroLap:12267] *** MPI_ERR_OTHER: known error not in list >>>>>>>> [diedroLap:12267] *** MPI_ERRORS_ARE_FATAL (processes in this >>>>>>>> communicator will now abort, >>>>>>>> [diedroLap:12267] *** and potentially your MPI job) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> What I can do? >>>>>>>> Thanks a lot >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 3 October 2014 08:15, Nick Papior Andersen <nickpap...@gmail.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> sequence >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Diego >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> users mailing list >>>>>>>> us...@open-mpi.org >>>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>>>>> Link to this post: >>>>>>>> http://www.open-mpi.org/community/lists/users/2014/10/25434.php >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Kind regards Nick >>>>>>> >>>>>>> _______________________________________________ >>>>>>> users mailing list >>>>>>> us...@open-mpi.org >>>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>>>> Link to this post: >>>>>>> http://www.open-mpi.org/community/lists/users/2014/10/25435.php >>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> users mailing list >>>>>> us...@open-mpi.org >>>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>>> Link to this post: >>>>>> http://www.open-mpi.org/community/lists/users/2014/10/25436.php >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Kind regards Nick >>>>> >>>>> _______________________________________________ >>>>> users mailing list >>>>> us...@open-mpi.org >>>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>> Link to this post: >>>>> http://www.open-mpi.org/community/lists/users/2014/10/25437.php >>>>> >>>> >>>> >>>> _______________________________________________ >>>> users mailing list >>>> us...@open-mpi.org >>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>> Link to this post: >>>> http://www.open-mpi.org/community/lists/users/2014/10/25438.php >>>> >>> >>> >>> >>> -- >>> Kind regards Nick >>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>> Link to this post: >>> http://www.open-mpi.org/community/lists/users/2014/10/25439.php >>> >> >> >> _______________________________________________ >> users mailing list >> us...@open-mpi.org >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >> Link to this post: >> http://www.open-mpi.org/community/lists/users/2014/10/25440.php >> > > > > -- > Kind regards Nick > > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2014/10/25441.php >