[MITgcm-support] Zonal filter with nPx>1

Jean-Michel Campin jmc at ocean.mit.edu
Thu Nov 13 09:57:21 EST 2014


Hi Roland,

Regarding solution differences due to changes the tile-domain decomposition:
In most cases, it comes from the global-sum used in CG solver(s).

There are 2 things that address this issue (but they slow down the model):
1) with the same tile decomposition (sNx,sNy) but different processor
   mapping (difference in any nSx,nSy,nPx,nPy) you can compile with:
   > #define GLOBAL_SUM_SEND_RECV
  in CPP_EEOPTIONS.h
  (stantard version: eesupp/inc/CPP_EEOPTIONS.h)
  but I realised that this is not going to help you since the current
  implemetation of the zonal filter does not even allow to have nSx different
  from 1 !
2) you can try to compile with:
  > #define CG2D_SINGLECPU_SUM
  also in eesupp/inc/CPP_EEOPTIONS.h
  This is even slower than (1) but should make the results independent
  of the tile decomposition if the only global-sum used is in CG2D 
  (hydrostatic simulation, without forcing global balance of surface
   forcing, without OBCs balance, no seaice dynamics).

Cheers,
Jean-Michel

On Thu, Nov 13, 2014 at 01:55:10PM +0000, Roland Young wrote:
> Hi Jean,
> 
> OK thanks.
> 
> I have coded a version that works for nPx>1 (at least for nSx=nSy=1). It gathers the field from all the processors along a longitude row and applies the filter on the west-most processor before scattering the filtered field back to the other processors.
> 
> I was wondering whether, in general, the MITgcm is bit-reproducible with respect to domain decomposition? I’d like to know whether my edited zonal filter does the same thing as the standard version but I can’t be sure as the output is not quite bit-reproducible. 
> 
> For example, I ran the following configurations:
> 
> (a) 16x1 standard zonal filter
> (b) 16x1 edited zonal filter
> 
> Output from (a) and (b) is bit reproducible.
> 
> (c) 4x4 edited zonal filter
> (d) 8x2 edited zonal filter
> (e) 8x1 standard zonal filter
> (f) 32x1 standard zonal filter
> 
> Output from (a) is not bit-reproducible wrt (c), (d), (e), or (f) (although identical to 1 part in 10^8 in U and V, and 1 part in 10^16 in theta, after 10 time steps)
> 
> (g) 16x1 no zonal filter
> (h) 4x4 no zonal filter
> 
> Output from (g) and (h) is not bit-reproducible (but are identical to 1 part in 10^8 in U and V, and 1 part in 10^16 in theta after 2 time steps - any more it crashes as the zonal filter isn’t on)
> 
> Bit-reproducibility is not critical for my work so I can probably proceed as-is, but are there any parts of the code that are known to be not bit-reproducible across domain decompositions? I’m using the global atmosphere with mom_vecinv.
> 
> Thanks,
> 
> Roland
> 
>  
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support



More information about the MITgcm-support mailing list