[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