Determinism

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 many models the final result 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 you run a given model you will get a different result. <br>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.

By default the program will run in deterministic mode. This can be changed by using the ‘set deterministic off’ command in a data file. You can also change the default by unchecking the “Determinism by default” box in Tools/Options/General in the User Interface.

Consequences for turning determinism off

  • Your model will run faster.
    How much faster will be code and model dependent. As much as 20% faster in FLAC3D, and 70% faster in PFC3D.
  • Your results will not be repeatable.
    In some cases where small changes propagate, you will get very different results every time you run the model.
  • Your data files (and project bundle) will no longer reliably reproduce your results.
    For archiving purposes, you should store the resulting save files along with your input data.
  • If you have a problem requiring support, Itasca may not be able to duplicate the issue.
    In this case you should re-run the model with determinism on. If the problem no longer occurs, there might be very little we can do to help you.