Greetings Siegmar; sorry for the horrid delay in replying. :-(
Ralph opened a ticket about this a while ago
(https://svn.open-mpi.org/trac/ompi/ticket/3351). I answered it this morning
-- see the ticket for the details.
Short version: I don't think that your program is correct.
On Oct 11, 2012, at 7:40 AM, Siegmar Gross wrote:
> Hi,
>
> I have built openmpi-1.9a1r27380 with Java support and try some small
> programs. When I try to scatter an object, I get a ClassCastException.
> I use the following object.
>
> public class MyData implements java.io.Serializable
> {
> static final long serialVersionUID = -5243516570672186644L;
>
> private int age;
> private String name;
> private double salary;
>
> public MyData ()
> {
>age= 0;
>name = "";
>salary = 0.0;
> }
>
> public void setAge (int newAge)
> {
>age = newAge;
> }
> ...
> }
>
>
> I use the following main program.
>
> import mpi.*;
>
> public class ObjectScatterMain
> {
> public static void main (String args[]) throws MPIException
> {
>int mytid; /* my task id
> */
>MyData dataItem, objBuffer;
>String processor_name; /* name of local machine*/
>
>MPI.Init (args);
>processor_name = MPI.Get_processor_name ();
>mytid = MPI.COMM_WORLD.Rank ();
>dataItem = new MyData ();
>objBuffer = new MyData ();
>if (mytid == 0)
>{
> /* initialize data item */
> dataItem.setAge (35);
> dataItem.setName ("Smith");
> dataItem.setSalary (2545.75);
>}
>MPI.COMM_WORLD.Scatter (dataItem, 0, 1, MPI.OBJECT,
> objBuffer, 0, 1, MPI.OBJECT, 0);
>/* Each process prints its received data item. The outputs
> * can intermingle on the screen so that you must use
> * "-output-filename" in Open MPI.
> */
>System.out.printf ("\nProcess %d running on %s.\n" +
> " Age: %d\n" +
> " Name: %s\n" +
> " Salary: %10.2f\n",
> mytid, processor_name,
> objBuffer.getAge (),
> objBuffer.getName (),
> objBuffer.getSalary ());
>MPI.Finalize();
> }
> }
>
>
> I get the following error, when I compile and run the program.
>
> tyr java 218 mpijavac ObjectScatterMain.java
> tyr java 219 mpiexec java ObjectScatterMain
> Exception in thread "main" java.lang.ClassCastException:
> MyData cannot be cast to [Ljava.lang.Object;
>at mpi.Intracomm.copyBuffer(Intracomm.java:119)
>at mpi.Intracomm.Scatter(Intracomm.java:389)
>at ObjectScatterMain.main(ObjectScatterMain.java:45)
> --
> mpiexec has exited due to process rank 0 with PID 25898 on
> ...
>
>
> Has anybody an idea why I get a ClassCastException or how I must define
> an object, which I can use in a scatter operation? Thank you very much
> for any help in advance.
>
>
> Kind regards
>
> Siegmar
>
> ___
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/