> On Jan 15, 2015, at 06:02 , Diego Avesani <diego.aves...@gmail.com> wrote:
> 
> Dear Gus, Dear all,
> Thanks a lot.
> MPI_Type_Struct works well for the first part of my problem, so I am very 
> happy to be able to use it.
> 
> Regarding MPI_TYPE_VECTOR.
> 
> I have studied it and for simple case it is clear to me what id does (at 
> least I believe). Foe example if I have a matrix define as:
> REAL, ALLOCATABLE (AA(:,:))
> ALLOCATE AA(100,5)
> 
> I could send part of it defining
> 
> CALL MPI_TYPE_VECTOR(5,1,5,MPI_DOUBLE_PRECISION,MY_NEW_TYPE)
> 
> after that I can send part of it with
> 
> CALL MPI_SEND( AA(1:10,:), 10, MY_NEW_TYPE, 1, 0, MPI_COMM_WORLD );
> 
> Have I understood correctly?
> 
> What I can do in case of three dimensional array? for example AA(:,:,:), I am 
> looking to MPI_TYPE_CREATE_SUBARRAY.
> Is that the correct way?
> 
> Thanks again

Indeed, using the subarray is the right approach independent on the number of 
dimensions of the data (you can use it instead of MPI_TYPE_VECTOR as well).

  George.


> 
> 
> 
> 
> Diego
> 
> 
> On 13 January 2015 at 19:04, Gus Correa <g...@ldeo.columbia.edu 
> <mailto:g...@ldeo.columbia.edu>> wrote:
> Hi Diego
> I guess MPI_Type_Vector is the natural way to send and receive Fortran90 
> array sections (e.g. your QQMLS(:,50:100,:)).
> I used that before and it works just fine.
> I think that is pretty standard MPI programming style.
> I guess MPI_Type_Struct tries to emulate Fortran90 and C structures
> (as you did in your previous code, with all the surprises regarding 
> alignment, etc), not array sections.
> Also, MPI type vector should be more easy going (and probably more efficient) 
> than MPI type struct, with less memory alignment problems.
> I hope this helps,
> Gus Correa
> 
> PS - These books have a quite complete description and several examples
> of all MPI objects and functions, including MPI types (native and user 
> defined):
> http://mitpress.mit.edu/books/mpi-complete-reference-0 
> <http://mitpress.mit.edu/books/mpi-complete-reference-0>
> http://mitpress.mit.edu/books/mpi-complete-reference-1 
> <http://mitpress.mit.edu/books/mpi-complete-reference-1>
> 
> [They cover MPI 1 and 2. I guess there is a new/upcoming book
> with MPI 3, but for what you're doing 1 and 2 are more than enough.]
> 
> 
> On 01/13/2015 09:22 AM, Diego Avesani wrote:
> Dear all,
> 
> I had some wonderful talking about MPI_type_create_struct adn
> isend\irecv with
> Gilles, Gustavo, George, Gus, Tom and Jeff. Now all is more clear and my
> program works.
> 
> Now I have another question. In may program I have matrix:
> 
> /QQMLS(:,:,:) /that is allocate as
> 
> /ALLOCATE(QQMLS(9,npt,18)/), where npt is the number of particles
> 
> QQMLS is double precision.
> 
> I would like to sent form a CPU to another part of it, for example,
> sending QQMLS(:,50:100,:). I mean sending the QQMLS of the particles
> between 50 to 100.
> I suppose that i could use MPI_Type_vector but I am not sure. The
> particle that I want to sent could be from 25 to 50 ecc.. ecc..so
>   blocklength changes everytime.
> 
> Do I have to use MPI_type_create_struct?
> Do I have correctly understood MPI_Type_vector?
> 
> Thanks a lot
> 
> 
> Diego
> 
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org <mailto:us...@open-mpi.org>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users 
> <http://www.open-mpi.org/mailman/listinfo.cgi/users>
> Link to this post: 
> http://www.open-mpi.org/community/lists/users/2015/01/26171.php 
> <http://www.open-mpi.org/community/lists/users/2015/01/26171.php>
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org <mailto:us...@open-mpi.org>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users 
> <http://www.open-mpi.org/mailman/listinfo.cgi/users>
> Link to this post: 
> http://www.open-mpi.org/community/lists/users/2015/01/26172.php 
> <http://www.open-mpi.org/community/lists/users/2015/01/26172.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/2015/01/26184.php

Reply via email to