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
Command | Contents | SI Unit Example |
---|---|---|
type | Type of load balancing. Options
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 |