Proposal: Refactor vtkMultiProcessController
Multiprocess controller is great for abstracting MPI/Socket communication in VTK filters. The implementation, however, is dated and should be modernized to make it easier to debug and extend.
-
move to a Common/
module. Filters should start using parallel communicators without hindrance. -
make dependency of IO/Legacy optional. Exchanging of data-object should raise compile-time errors unless IO/Legacy was dependend on. Thus, delay dependency on IO modules until the code that starts exchanging data objects. -
separate RPC/RMI and communication APIs. It's unclear why they need to be in the same class. -
make it possible to serialize custom types with ease. -
use templates to preserve element type all the way to MPI_...
call. Currently, we cast to void* and call some generic method that does the MPI call.