model deterministic command


model deterministic <default> b

Set the deterministic mode. Deterministic mode is reset to the default setting whenever a model new command is given. The optional default keyword is used to set the default setting to b. When default is not used then the current deterministic mode only is set. On installation (that is, prior to any user change) the program’s default determinism setting is on. The default setting can also be changed by using “Determinism by default” checkbox in the Options Dialog.

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 errors to accumulate differently. For many models, the final result of these differences is nearly impossible to detect. But for a wide class of models these differences can magnify, resulting in a situation where a different result occurs every time a given model is run.

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 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.

The following are the effects of turning determinism off.

  • The model will run faster. How much faster will be code- and model-dependent. FLAC3D is always deterministic; setting determinism off with this command is ignored. 3DEC will be approximately 10% faster. PFC will be about 15% faster.
  • Results will not be repeatable. In some cases where small changes propagate, very different results will occur every time the same model is run.
  • Data files (and project bundle) will no longer reliably reproduce results. For archival purposes, users should store the resulting save files along with input data.
  • For a problem requiring support, Itasca may not be able to replicate the issue. In this case the model should be rerun with determinism on. If the problem no longer occurs, there might be very little that can be done to resolve the issue.