Load Balancing

The dynamic load-balancing (LB) capability allows the nanoFluidX code to redistribute the work load among the GPUs, which generally improves the overall performance.

Load balancing capability is relevant when dealing with irregular geometries in which large portions of empty space are among the components. Load balancing capability is less pronounced for highly-compact geometry, such as a fully filled box. With load balancing capability turned on you will typically observe a faster run time.

Load balancing capability was tested on a highly irregular test case (dam break) and has shown excellent scaling up to 100 GPUs.

Commands

loadbalancingParameters
{
    type                               DYNAMIC
    frequency                          100
    imbalance_tol                      1.1
}

Definitions

Attention: It is recommended that the load balancing command parameters are kept at their default values. Incorrect or inadequate parameters can impair the run time of the simulation.
Command Contents SI Unit Example
type Type of load balancing.
Options
  • NOLB
  • DYNAMIC

Default = NOLB

 
frequency This parameter specifies the frequency at which the workload will be redistributed among the GPUs. The frequency is expressed in time steps, so a number of 100 sets the redistribution every 100 time steps. This value can cause computational overhead if set to very low values. Keep the default value of 100 time steps, or at least that order of magnitude.

Default = 100

 
imbalance_tol This parameter specifies the workload tolerance discrepancy between the GPUs. The default value of 1.1 implies that the work load redistribution will be carried out among two GPUs only if the work load that they are handling differs by more than 10 percent.

Default = 1.1