On Jan 8, 2013, at 9:56 AM, Siegmar Gross <siegmar.gr...@informatik.hs-fulda.de> wrote:
> Jeff suggested some possible solutions in the last > weeks which I will now discuss. > > 1) Simulate a 2-dimensional (m,n)-array in one 1-dimensional array > with m*n elements and perform all necessary index computations > yourself. This solution works and with the new method > Datatype.Resized you can scatter all columns of a matrix to > different processes. > > The problem is that you don't use a multi-dimensional array > from Java. I'm not a Java expert, but I suppose that it even > contradicts the philosophy of object-oriented programming. > In my opinion this solution will also add new sources of errors > if you must implement complicated algorithms (bugs with index > computations, unreadable source code, etc.). +1 > 2) Implement a wrapper class in Java so that you don't have to deal > with index computations in your normal program. > > As far as I know, it would have been necessary to use set- and > get-methods to write and read matrix elements in that case, > because Java doesn't allow operator overloading (I'm not even > sure, if it would have been possible to overload "[][]" in the > case that overloading would have been supported). Oh! Bummer; I didn't realize you couldn't overload [] in Java. > 3) Implement a wrapper class which possibly needs to be written in C. Some other options I just sent to you in an off-list mail (sorry, I'm still slogging through all my vacation-accumulated mail...): 4. Have the Java language gods make a standardized way to pass buffers to C (like Fortran did for MPI-3). That would obviate the problem. 5. Make the Java MPI interface just magically do the Right Thing to make MPI_Type_vector "just work" behind the scenes. I'm not 100% sure this is possible, but perhaps someone could figure out a way. -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/