diff --git a/etc/controlDict b/etc/controlDict index 912ad98538d1bce9701a51696428500b9a1168c8..3c5749e0564c0a1121da086d832df401dbf5fef7 100644 --- a/etc/controlDict +++ b/etc/controlDict @@ -81,13 +81,13 @@ OptimisationSwitches //- collated: thread buffer size for queued file writes. // If set to 0 or not sufficient for the file size threading is not used. - // Default: 2e9 - maxThreadFileBufferSize 2e9; + // Default: 1e9 + maxThreadFileBufferSize 0; //- masterUncollated: non-blocking buffer size. // If the file exceeds this buffer size scheduled transfer is used. - // Default: 2e9 - maxMasterFileBufferSize 2e9; + // Default: 1e9 + maxMasterFileBufferSize 1e9; commsType nonBlocking; //scheduled; //blocking; floatTransfer 0; diff --git a/src/Pstream/mpi/UPstream.C b/src/Pstream/mpi/UPstream.C index 321ae90c4aa078694d334607747b58079dbf142d..e92cb32582bb77403960a3ff400a1b12cf9a0c78 100644 --- a/src/Pstream/mpi/UPstream.C +++ b/src/Pstream/mpi/UPstream.C @@ -30,6 +30,7 @@ License #include "SubList.H" #include "allReduce.H" #include "int.H" +#include "collatedFileOperation.H" #include <mpi.h> @@ -128,12 +129,17 @@ bool Foam::UPstream::init(int& argc, char**& argv) //MPI_Init(&argc, &argv); + int wanted_thread_support = MPI_THREAD_SINGLE; + if (fileOperations::collatedFileOperation::maxThreadFileBufferSize > 0) + { + wanted_thread_support = MPI_THREAD_MULTIPLE; + } int provided_thread_support; MPI_Init_thread ( &argc, &argv, - MPI_THREAD_MULTIPLE, + wanted_thread_support, &provided_thread_support );