0

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();
4

1 に答える 1

1

試してみる!

 Object[] sendArr = new Object[1];
 sendArr[0] = (Object) randomState;
 MPI.COMM_WORLD.Isend(sendArr , 0 , 1 , MPI.OBJECT , 3 , Constants.STARTOPERATION);
于 2015-08-26T10:32:04.257 に答える