42.0 - Accumulate Deterministic Quantities
When a calculation is performed in parallel over multiple CPUs or cores, the order in which specific
computations occur can and will change. This can cause roundoff error to accumulate differently.
For some models, the final results of these differences are nearly impossible to detect.
But for a wide class of models, these differences can magnify, resulting in a situation where every
time a given model is run, there is a different result. It is important to note that all of
these results are equally valid, as they are all within the range of finite-precision floating point
error. Deterministic mode (set with the model deterministic
command) sacrifices efficiency and
memory to force the parallel computation to result in the same answer every time, regardless of the
number of CPUs it is performed on or their relative speed.
When looping over a container in a parallel fashion, the ordered list of entries are split into sub-lists (called blocks) that are sent for processing to each processing thread. One strategy to enforce determinism is to form partial results for each of these blocks and store them in the same order as the blocks were created. During this operation in the cycle sequence, the partial results are combined in order to produce the final result. This ensures that the final result is the same regardless of the order of operations. This operation is not performed if deterministic mode is turned off.
– Next Cycle Point: Contact Coupling –
Was this helpful? ... | FLAC3D © 2019, Itasca | Updated: Feb 25, 2024 |