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