[MITgcm-support] OpenMP and multithreading

Dimitris Menemenlis menemenlis at sbcglobal.net
Wed Oct 17 20:22:28 EDT 2007

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.

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.

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.


Dimitris Menemenlis <menemenlis at sbcglobal.net>
5056 Oakwood Ave, La Canada, CA 91011-2450
tel/fax: 818-790-6735;   cell: 818-625-6498

More information about the MITgcm-support mailing list