int user_pack_cg_data(void *user, void **user_cg)
If the user wishes to employ parallelism and wants a separate cut generator module, this function can be used to send all problem-specific data that will be needed by the cut generator module to perform separation. This could include instance data, as well as user parameter settings (see Section 5.5.1 for a discussion of this). This is one of the few places where the user may need to worry about the configuration of the modules. If either the tree manager or the LP are running as a separate process (either COMPILE_IN_LP or COMPILE_IN_TM are FALSE in the make file), then the data will be sent and received through message-passing. See user_receive_cg_data for more discussion. Otherwise, it can be copied through shared memory. The easiest solution, which is set up by default is to simply copy over a pointer to a single user data structure where instance data is stored. The code for the two cases is put in the same source file by use of #ifdef statements. See the comments in the code stub for this function for more details.
void *user | IN | Pointer to the user-defined data structure. |
void **user_cg | OUT | Pointer to the user-defined data structure for the cut generator module. |
USER_ERROR | Error. SYMPHONY stops. |
USER_SUCCESS | Packing is done. |
USER_DEFAULT | No data to send to the cut generator (no separation performed). |