OpenFOAM® v1912: New and improved parallel operation


Updated file modification skew

When running a parallel case on multiple nodes the processor directories are usually accessed using a network filing system, e.g. NFS. This might have a non-trivial amount of latency to see changes to e.g. dictionaries. For this purpose there is in etc/controlDict

fileModificationSkew 10;
which is the number of seconds of file-modification-time difference before a dictionary is seen as having been changed. The second use is in dynamically compiled code, e.g. through the #codeStream dictionary entry or coded functionObject. Here it is the amount of time waiting for the resulting library in the dynamicCode/ sub-dictionary to become available. However, in some cases the file server might have a large delay so this fileModificationSkew has to be set to the maximum expected value.

In this release the behaviour has been changed in that there is an additional control

maxFileModificationPolls 100;
which is the maximum number of times the code checks after waiting fileModificationSkew seconds. With this behaviour the fileModificationSkew can now be set to a much lower value (minimum 1).

This above problem is only relevant for NFS mounted disks and multi-node runs. Single-node runs will have a consistent view of the files for all cores so if the master has finished compiling the code the slaves will see the same code.

For distributed runs, e.g. using different roots for different cores - see the $FOAM_TUTORIALS/IO/fileHandler tutorial. Here the code needs to be compiled on all cores anyway so there should be no synchronisation problem.

Updated ADIOS2 function object

The adiosWrite function object has been rewritten to use the ADIOS2 library for parallel IO and is now available as a regular OpenFOAM module

The implementation supports checkpointing and restart

More tests at scale are required and will be conducted as part of the activities of the HPC Technical Committee