MPJExpress を使用してオブジェクトを送信しようとしています:-
StateP randomState = HeuristicSolverUtility.createRandom(Constants.DIMENSION , Constants.w1);
MPI.COMM_WORLD.Isend(randomState , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION);
または、この回答hereから、このフォームで使用します
StateP[] stateArray = new StateP[1];
stateArray[0] = randomState;
MPI.COMM_WORLD.Isend(stateArray , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION);
上記のコード行が実行されると、この例外が発生します:-
java.lang.reflect.InvocationTargetException
Caused by: mpi.MPIException: mpi.MPIException: java.lang.ClassCastException: common.model.StateP cannot be cast to [Ljava.lang.Object;
at mpi.Comm$9.handleCompletion(Comm.java:1678)
StateP クラスはシリアライズ可能です
public class StateP implements State , Serializable
{
ここでこの質問に対する受け入れられた解決策はありません:- MPJ Express でオブジェクトを送信します
そして、最も投票された答えは私にはうまくいきません。これを修正するにはどうすればよいですか、何が間違っていますか?
必要に応じて、これは MPJ.IReceive 関数です
StateP startingState = HeuristicSolverUtility.generateGoalState(Constants.DIMENSION, Constants.w1);
Request request = MPI.COMM_WORLD.Irecv(startingState, 0, 1, MPI.OBJECT, 0, Constants.STARTOPERATION);
request.Wait();