dear George, dear Gus, dear all, Could you please tell me where I can find a good example? I am sorry but I can not understand the 3D array.
Really Thanks Diego On 15 January 2015 at 20:13, George Bosilca <bosi...@icl.utk.edu> wrote: > > 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> 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-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 >>> Subscription: 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 >>> >>> >> _______________________________________________ >> 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/ >> 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 > > > > _______________________________________________ > 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/26192.php >