While I am measuring the timing information for MG2, I realize two bugs related to the GPU run, which is introduced in my recent PR here (https://github.com/ESCOMP/PUMAS/pull/34):
When the precip_fall_corr namelist variable is set to TRUE, there is vertical dependency during the calculation of fnx and fx variables, which is handled incorrectly by the current GPU codes. This will either crash the GPU run or lead to a wrong answer.
An OpenACC directive is missing when applying the ice number limiter. By default the compiler will parallelize the two nested loops at the gang and vector levels, respectively. This, however, will produce inconsistent GPU results when varying the PCOLS values.
These two bugs are fixed in this PR. All the changes are BFB for the CPU run on Cheyenne and pass the ECT for the GPU run on Casper.
While I am measuring the timing information for
MG2
, I realize two bugs related to the GPU run, which is introduced in my recent PR here (https://github.com/ESCOMP/PUMAS/pull/34):precip_fall_corr
namelist variable is set toTRUE
, there is vertical dependency during the calculation offnx
andfx
variables, which is handled incorrectly by the current GPU codes. This will either crash the GPU run or lead to a wrong answer.gang
andvector
levels, respectively. This, however, will produce inconsistent GPU results when varying thePCOLS
values.These two bugs are fixed in this PR. All the changes are
BFB
for the CPU run on Cheyenne and pass the ECT for the GPU run on Casper.