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

Reply via email to