-
Notifications
You must be signed in to change notification settings - Fork 374
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Missing layerthicknessedge decl with pgigpu #4865
Comments
Thanks @amametjanov - I stumbled on this related to another PR review today too. Looks like the change wasn't propagated into all the acc directives. @jonbob I can put together a quick fix for this today. |
Well...thought it was just a few missing transfer directives, but something else is missing so not such a quick fix. Digging a little more. |
When the new layerThickEdgeFlux quantity is calculated, it was being set to the Mean variable with array syntax and no OpenACC so when OpenACC enabled, the Mean variables is computed on the device and the Flux variable is set equal to the Mean value on the host that hasn't been updated from the device. PR to fix coming... |
Thanks! The PR fixed the build error.
Summit's nvhpc/21.3 is eagerly checking and throwing errors for vars in
|
Thanks @amametjanov , pushing a change now... |
@amametjanov - the iceDraft case should be correct, so I'm guessing nvhpc might be having trouble because it's an optional argument? I'll go ahead and remove from the directive for now. I have a better fix for both, but it involves a more extensive change that will need its own PR. |
With the latest branch update, I still had to remove
|
Think I know what the issue and will work on a more permanent fix soon, but for now went ahead and removed from the clause and pushed the change. |
Fixes OpenACC bugs introduced by recent layerThickEdge changes During a recent addition of layerThickEdgeFlux/Mean variables, some GPU errors were introduced: * layerThickEdgeXXX vars were missing from some OpenACC update directives * the use of array syntax when layerThickEdgeFlux set to layerThickEdgeMean was causing the operation to happen on host (with bad data) rather than device when OpenACC turned on * replaced complicated string conditionals with case construct to improve performance and clarity * the conditionals above were moved to diagnostics init * cleaned up the thickness edge routine a little * fixed related OpenACC present data issues in surface pressure calculation by moving option conditionals outside loop and splitting loop accordingly Tested on Summit w/ PGI in QU240 and bfb when OpenACC turned on Fixes #4865 [BFB]
With the latest
next
branch, nvfortran is raising a build error on Summit and Ascent forwhich appears to be from conversion of
layerThicknessEdge
tolayerThicknessFlux
in #4832.FYI ^@brian-oneill
The text was updated successfully, but these errors were encountered: