I have some function names which are assigned to some nodes. I have to decide which functions to move to other nodes to increase speed.
Why do I have to move the functions to other nodes? If communicating functions are on same nodes they take less time as compared to if communicating functions are on different nodes. A function might be communicating with several functions (all could be on different nodes). The question is which node do I move it to, to maximize the global performance.
I need to find a globally optimal solution using dynamic programming.
I have the following information
The integer value of the amount of data transferred between functions
The amount of time it takes to transfer data between nodes. Initially all functions have been assigned to some nodes.
Can somebody help me in mapping this problem to the assembly line scheduling algorithm (Dynamic programming) or creating some other dynamic programming solution to this problem?
The hard metric is the execution time of the entire program.The independent running time of a function is calculated by any timer API (We already have it). Its (function's) actual running time would be equal to its independent running time + the running time of all the functions which are producing data consumed by this function + the communication time between this function and other functions on same node + the communication time between this function and functions on other nodes. The program's running time would then be the sum of the running time of all the functions in the program.
I have to minimize the execution time of the program which is the sum of the execution time of all the functions.Each functions execution time is the sum of its own time(precalculated) and the sum of all functions which will will execute before it and its sum with its time spent communicating with other functions(same or different nodes).