[MITgcm-devel] REAL4_IS_SLOW is broken

Martin Losch Martin.Losch at awi.de
Sat Oct 25 10:59:11 EDT 2008


Hi Chris,

I think I found the problem: in CPP_EEMACROS.h the expansion of the  
_EXCH_*RS/4 macros is independent of REAL4_IS_SLOW, that is they  
always expand into RL like this:
#define _EXCH_XY_RS(a,b) CALL EXCH_XY_RL ( a, b )
#define _EXCH_XYZ_RS(a,b) CALL EXCH_XYZ_RL ( a, b )
#define _EXCH_XY_R4(a,b) CALL EXCH_XY_RL ( a, b )
#define _EXCH_XYZ_R4(a,b) CALL EXCH_XYZ_RL ( a, b )

I fixed this by putting the into ifdefs and expanding them to _RS in  
the cae of REAL4_IS_SLOW. That did the trick. I will certainly check,  
if this breaks the testreports, but in case it doesn't break the  
tests, can I just check this in (I am asking, because I don't feel  
too comfortable futzing around in this area; maybe you or anybody  
else want to have a look at my modifications frist?)

Martin

PS. Should we have a test that checks this functionality, or is it  
not so important?


On 25 Oct 2008, at 07:36, Martin Losch wrote:

> Hi Chris,
>
> after our telephone conversation yesterday, I quickly tried #undef  
> REAL4_IS_SLOW, to see whether this has any effect on the quadcore  
> performance. It compiles without any problems, but the code stops  
> at the temperature == 0 test in ini_theta.F, some THETA values are  
> zero. Actually many values are zero, not only temperature, because  
> after exchange there are stripes of zeros along the tile edges in  
> all grid fields (most of them are now real*4, but theta is still  
> real*8).
>
> Now, I did expect this to work right away, but since you and  
> Dimitris have already gone through using the _RS -> real*4  
> business, maybe you remember what you did exacty, or maybe this is  
> documented somewhere?
>
> Our domain here at Weizmann is a cartesian grid, so I am NOT using  
> exch2, as you might have with Dimitris. Do you have any idea,  
> what's going on? If it's not so complicated to do I am willing to  
> fix this in the code (never good to have feature that does not  
> work, right?), otherwise we should include a comment in  
> CPP_EEOPTIONS.h that this flag REAL4_IS_SLOW always needs to be  
> defined
>
> Martin
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel




More information about the MITgcm-devel mailing list