> 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