The optimisation code has been split into the three standard parts of the multi-processor:
- Frame_order_memo is the new Memo object used to store data on the master for use when data is
returned from the slaves.
- Frame_order_minimise_command is the Slave_command which stored all required data for the
optimisation, is pickled and sent to a slave, sets up the target function, and then performs
optimisation.
- Frame_order_result_command is the Result_command initialised by the Slave_command on the slave for
pickling and returning results to the master.
To avoid pickling the target function class, which is not possible, the store_bc_data() and
target_fn_setup() functions of the specific_analyses.frame_order.optimisation module have been
redesigned to work with basic data structures rather than the target function class directly. The
target_fn_setup() function no longer returns an initialised target function class, but rather all
the data assembled prior to the initialisation. And the target function class was itself modified
so that pcs_theta and rdc_theta are always defined to allow the store_bc_data() function to be used
successfully.
This parallelisation currently only allows the Monte Carlo simulations to be run on slave
processors.