[MITgcm-support] OpenMP and multithreading

Paola Cessi pcessi at ucsd.edu
Thu Oct 18 13:30:40 EDT 2007

Thanks  Constantinos. That was very helpful.

In your example below do you mean nSx=nSy=2 (not sNx=sNy=2), and nTx=2, 
nTy=1, right?

Also where do we find the "the daily testreports" ?

Thanks again,


On Thu, 18 Oct 2007, Constantinos Evangelinos wrote:

> On Wednesday 17 October 2007 8:22:28 pm Dimitris Menemenlis wrote:
>> Paola, the total size of the domain is Nx*Ny where
>>       &           Nx  = sNx*nSx*nPx,
>>       &           Ny  = sNy*nSy*nPy,
>> nPx*nPy is the total number of (MPI) processes,
>> nSx*nSy is the total number of tiles per process, and
>> sNx*sNy is the dimension of each tile.
>> For shared-memory threaded code each one of the nSx*nSy tiles will
>> be handled by a different thread.  If nSx*nSy=1, then you will have
>> only one thread per MPI process.
> Actually the number of threads is set in eedata and is different for the X
> (nTx) and Y (nTy) direction (with their product nTx*nTy assumed to be equal
> to OMP_NUM_THREADS for OpenMP code). The obvious restriction is that the
> number of threads in X should be a divisor of sNx and the number of threads
> in Y should be a divisor of sNy. So it is entirely possible to have sNx=sNy=2
> and nTx=2, nTy=1.
>> Some words of caution:
>> 1) shared-memory threaded code is not as well supported as MPI code,
>> especially in the packages where careless programmers (like myself)
>> sometimes (accidentally) introduce constructs that break the threading.
> You can look at the daily testreports with multithreading turned on to see
> which of the test cases appear to work. On some platforms (eg. Linux on PPC
> with the IBM XL compilers) we have complete lack of success for some unknown
> (so far) reason.
>> 2) with some exceptions there is very little gain in using threaded code vs
>> MPI code, even on shared memory platforms.  For example on the SGI origin
>> and altix we typically use MPI rather than threaded code, even though they
>> are shared memory platforms.
> With dual and quad core processors we may need to revisit that question. For
> the time being however quad core seems to be suffering from a lack of memory
> bandwidth and OpenMP would not help there.
> Constantinos
> --
> Dr. Constantinos Evangelinos
> Department of Earth, Atmospheric and Planetary Sciences
> Massachusetts Institute of Technology
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support

More information about the MITgcm-support mailing list