MATLAB: Spmd error: Could not deserialize object: java.io.IOException

iojavaspmd

Lab 1:
Warning: Could not deserialize object: java.io.IOException: Cannot deserialize proxy: Ice.ObjectInputStream not found/n
> In parallel.internal.pool.deserialize (line 9)
Lab 2:
Warning: Could not deserialize object: java.io.IOException: Cannot deserialize proxy: Ice.ObjectInputStream not found/n
> In parallel.internal.pool.deserialize (line 9)
Lab 1:
In parallel.internal.pool.deserializeFunction (line 12)
In spmdlang.remoteBlockExecution>iDeserializeInputs (line 169)
In spmdlang.remoteBlockExecution>iPrelude (line 109)
In spmdlang.remoteBlockExecution (line 36)
Lab 2:
In parallel.internal.pool.deserializeFunction (line 12)
In spmdlang.remoteBlockExecution>iDeserializeInputs (line 169)
In spmdlang.remoteBlockExecution>iPrelude (line 109)
In spmdlang.remoteBlockExecution (line 36)

Best Answer

The problem here is that you appear to be creating a java object in the MATLAB client process that cannot be transferred to the worker - which is a separate process. It's not clear to me from your code exactly where that is, but what you need to do is simple: you must ensure that these objects are created on the workers. In other words, you must perform whatever setup phase involves the java/Ice API inside an spmd block.