On Jan 8, 2013, at 9:56 AM, Siegmar Gross <Siegmar.Gross_at_[hidden]> 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.).
> 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.
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/