Remove private attribute for pointers in threaded framework for PGI#449
Conversation
|
Quoting @philipwjones on E3SM PR 3396: "This is not likely to be an acceptable solution but can be a local mod if people need a workaround near-term." I think a little more analysis is needed to justify the changes in this PR going onto the |
|
For what it's worth, there seems to be a similar issue in the flang compiler; see flang Issue 627. I think newer versions of the PGI compiler may be using LLVM, so this is perhaps not a coincidence. |
|
@mgduda thanks for the ref to flang . This error/bug also appeared in an earlier PGI release but was fixed for a while. Now appears to be back. Regarding my statement that it might not be an acceptable solution, that referred to the fact that in the ocean all variables are default private (first private), so the extra private declaration here is probably redundant. But I didn't know what other components used as default in parallel regions. If it is also the case there, this mod is probably b4b for others too. What is the convention in the atm? Any chance you could run a quick check? I can try and look at other components. Since we need to use PGI on Summit for all GPU work, this is currently inhibiting that work. We'll keep pressing on the compiler side too. |
|
@philipwjones and @amametjanov sorry I missed this. What is the status? |
|
@mark-petersen PGI has reproduced the problem and it had been sent to engineers, but they warned the fix might not happen soon. Meanwhile, it's still broken on Summit. Might be nice to still have the short-term workaround in. |
|
@mgduda could you also review this with the PR bunch today? The makefile flag does not affect others, and is a way for us to run with the PGI compiler and threading until PGI fixes the root problem. The |
|
@mgduda can we merge this? |
|
Sorry, all, for holding this up. I have no objections, and I'll leave an approving review; but first, I think it would be good if the merge commit message (which is usually taken to be the original description of the PR) contained a more detailed description of the problem that this PR is addressing, how the changes in the PR fix the problem, etc. So, I'd recommend describing:
|
|
@amametjanov The description of the PR right now states that it "Remove[s] private attribute for pointers", but it looks like the entire |
|
@amametjanov if you could edit the first comment on this PR to include more detail and address these comments, then we can merge it in. I always use that first comment as the merge message. |
|
PGI Update - was informed today (6/4) that the PGI fix for this has been implemented and should appear in the 20.7 (July) release. Think it's still useful to keep this fix in for when we may need to run with previous compiler versions. |
8e4a132 to
21b4888
Compare
|
Keeping non-pgi modules constant at and varying 5 available pgi modules on Summit, the errors are as follows. with line 8236 having: For Regarding
I don't think so. This is PGI- and pointer-specific. Updated PR description above for a merge commit message. |
|
@mgduda, the PR description in the commit message is now improved. Can you approve? |
mgduda
left a comment
There was a problem hiding this comment.
Thanks very much for the improved PR description. This looks good to me.
#3737) Update MPAS framework This PR brings in a new mpas-source submodule with updates to the mpas framework itself, plus changes to the cores supporting the framework update. Some changes are made to the atmosphere core, even though it is not used by E3SM, in order to maintain consistency with the framework. This update includes the following individual branches and PRs, many of which are additions to the makefiles for summit, or optional libraries: * az/azamat/mpas-cmake/mpas-tool-dir (MPAS-Dev/MPAS-Model#629) * init_atmosphere/kd_tree_ties (MPAS-Dev/MPAS-Model#630) * mark-petersen/framework/add_FillValue (MPAS-Dev/MPAS-Model#616) * mark-petersen/framework/add_lapack_option (MPAS-Dev/MPAS-Model#613) * amametjanov/framework/nullify-field-pointers (MPAS-Dev/MPAS-Model#578) * framework/makefile_e3sm (MPAS-Dev/MPAS-Model#603) * xylar/framework/make_shell_bash (MPAS-Dev/MPAS-Model#594) * registry/missing_value (MPAS-Dev/MPAS-Model#562) * pwolfram/updates_make_intel_stack (MPAS-Dev/MPAS-Model#592) * azamat/framework/pgi-cpr-omp-workaround (MPAS-Dev/MPAS-Model#449) * az/framework/e3sm-cmake-qnosmp-typo (MPAS-Dev/MPAS-Model#579) * xylar/compass/add_prerequisite_tag * atmosphere/fix_timekeeping_imports (MPAS-Dev/MPAS-Model#582) * xylar/fix_docs_ci (MPAS-Dev/MPAS-Model#575) * xylar/add_compass_docs (MPAS-Dev/MPAS-Model#472) * philipwjones/framework/summitmake (MPAS-Dev/MPAS-Model#536) * atmosphere/atm_core_cleanup (MPAS-Dev/MPAS-Model#548) * init_atmosphere/parse_geoindex (MPAS-Dev/MPAS-Model#459) * xylar/compass/add_copy_file (MPAS-Dev/MPAS-Model#467) * init_atmosphere/kd_tree (MPAS-Dev/MPAS-Model#438) * init_atmosphere/mpas_stack (MPAS-Dev/MPAS-Model#426) * operators/add_mpas_in_cell (MPAS-Dev/MPAS-Model#400) Fixes #3396 Fixes #3236 [BFB]
Update MPAS framework This PR brings in a new mpas-source submodule with updates to the mpas framework itself, plus changes to the cores supporting the framework update. Some changes are made to the atmosphere core, even though it is not used by E3SM, in order to maintain consistency with the framework. This update includes the following individual branches and PRs, many of which are additions to the makefiles for summit, or optional libraries: * az/azamat/mpas-cmake/mpas-tool-dir (MPAS-Dev/MPAS-Model#629) * init_atmosphere/kd_tree_ties (MPAS-Dev/MPAS-Model#630) * mark-petersen/framework/add_FillValue (MPAS-Dev/MPAS-Model#616) * mark-petersen/framework/add_lapack_option (MPAS-Dev/MPAS-Model#613) * amametjanov/framework/nullify-field-pointers (MPAS-Dev/MPAS-Model#578) * framework/makefile_e3sm (MPAS-Dev/MPAS-Model#603) * xylar/framework/make_shell_bash (MPAS-Dev/MPAS-Model#594) * registry/missing_value (MPAS-Dev/MPAS-Model#562) * pwolfram/updates_make_intel_stack (MPAS-Dev/MPAS-Model#592) * azamat/framework/pgi-cpr-omp-workaround (MPAS-Dev/MPAS-Model#449) * az/framework/e3sm-cmake-qnosmp-typo (MPAS-Dev/MPAS-Model#579) * xylar/compass/add_prerequisite_tag * atmosphere/fix_timekeeping_imports (MPAS-Dev/MPAS-Model#582) * xylar/fix_docs_ci (MPAS-Dev/MPAS-Model#575) * xylar/add_compass_docs (MPAS-Dev/MPAS-Model#472) * philipwjones/framework/summitmake (MPAS-Dev/MPAS-Model#536) * atmosphere/atm_core_cleanup (MPAS-Dev/MPAS-Model#548) * init_atmosphere/parse_geoindex (MPAS-Dev/MPAS-Model#459) * xylar/compass/add_copy_file (MPAS-Dev/MPAS-Model#467) * init_atmosphere/kd_tree (MPAS-Dev/MPAS-Model#438) * init_atmosphere/mpas_stack (MPAS-Dev/MPAS-Model#426) * operators/add_mpas_in_cell (MPAS-Dev/MPAS-Model#400) Fixes #3396 Fixes #3236 [BFB]
Available PGI versions on Summit (18.7, 18.10, 19.9, 19.10, 20.1) either lead to build-time or run-time errors without this update. This adds
CPRPGIpreprocessor macro for PGI compiler build targets and the macro removes pointers from private clause ofomp doworkshare regions insrc/framework/mpas_dmpar.F. With this update, all available PGI versions compile and run without any errors. Additional details of error messages are in comments ofMPAS-Dev/MPAS-Model#449PR.Fixes E3SM-Project/E3SM#3236, E3SM-Project/E3SM#3396
[bit-for-bit]