x
Our website uses cookies. By using the website you agree ot its use. More information can be found in our privacy policy.

Dynamic Load Balancing

MPPDYNA begins each simulation by splitting the model into multiple pieces (domains), and assigning each domain to a CPU core. This is referred to as “domain decomposition.” Efficient MPP processing requires that, as much as possible, every CPU core is kept busy doing useful work. That is to say, each domain should represent the same amount of work to be done. If one core is assigned a domain that is too large, then at certain points in each timestep cycle the other cores will be idle, waiting for this core to finish its calculations. The initial decomposition is based primarily on measured execution times for the different types of elements and the different material models. And it has been the case that once the domains are determined, they persist through the duration of the calculation. This approach has two significant problems. First, the element costs used during decomposition are not perfectly accurate. As material types are added, routines are modified, compiler options changed, and new CPUs are available, keeping this decomposition timing information up to date is simply infeasible. But even if that could be done, the second issue is that for most materials the computational cost of the material changes during the calculation. As elements distort, or exceed their elastic limit and begin to experience plastic deformation, the element evaluations can become more time consuming. This leads to the inevitable conclusion that any static decomposition will result in at least some computational imbalance. As core counts increase, the need for dynamically adjusting the decomposition will also increase.