-
Notifications
You must be signed in to change notification settings - Fork 15
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
Feature/aoloso/hybrid openmp issue#181 #191
Conversation
…ce condition when using OpenMP
…hat are not part of the original list of internal fields to MAPL_RestartSkip to esnure zero-diff with stock
…hreads and current thread
I am going to hold on to this PR until Virginie checks in her latest diagnostic mods and ask you to remerge to develop. I want to make sure Virginie does not miss any of these OMP mods. Also, we will need to be educated to maintain this capability. It would be very easy for someone to add code and mess this up. |
@amdasilva @vbuchard NOAA has been very patient, but is continuing to ask when this capability will be available in GOCART ... @aoloso Could you update the branch and see if anything needs fixing for a new merge? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes seem reasonable, although details are a bit hard to follow. Cross your fingers...
Changes were made so GOCART2G and its children can be run with component level
OpenMP threading. The key change is to create the data structure ThreadWorkspace
to hold variables that should be private to each thread to avoid race conditions.
Additionally spatially distributed arrays that were not in any of the ESMF states
were added to the ESMF internal state so they could be properly handled when
the 'mini' ESMF sates are created. Those arrays are xhno3 for NI2G, h202_init
for SU2G, and deep_lakes_mask for SS2G. All of these arrays have MAPL_RestartSkip
option so they are not written to restart.