-
Notifications
You must be signed in to change notification settings - Fork 30
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
(Towards #2271, closes #2278, closes #2849) Generalise reference_accesses() and use to tidy KernelModuleInlineTrans. #2825
Conversation
I need to add explicit unit tests for the new |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #2825 +/- ##
=======================================
Coverage 99.88% 99.89%
=======================================
Files 359 359
Lines 50860 50952 +92
=======================================
+ Hits 50804 50897 +93
+ Misses 56 55 -1 ☔ View full report in Codecov by Sentry. |
This PR enhances the functionality of Ready for review. One for @hiker or @sergisiso. |
(I've triggered the integration tests.) |
Taking this back as both the NEMOv4 and LFRic integration tests failed :-( |
LFRic ('with all transformations') test fails with:
and the NEMO v.4 OpenACC kernels test fails at the final link stage:
I think the latter often means we've put OpenACC around a function call but the function itself hasn't been marked-up for GPU compilation? |
In LFRic, we have an in-lined kernel that calls our PSyclone-generated routine but that routine hasn't been inlined:
Presumably, the symbol isn't being spotted by the transformation? |
The issue seems to be that Some suggestions: SYMBOLIC, STATIC, COMPILE_TIME What do @hiker and @sergisiso think? |
I don't like SYMBOLIC, as any other reference is also symbolic. I could live with STATIC and COMPILE_TIME but I don't know if they are descriptive enough (and it is similar to some of the symbol interfaces which can make it confusing). Why don't we simply call them: CALL / CALLED Note that before we discussed a new AccessType that would apply for things that Fortran calls inquire/inquiry e.g. lbound(ref), size(ref, 2), ..., I would keep this separate and call these "ref" AccessType INQUIRE. |
I like, Given that we are discussing access modes: while I am aware that I have added it, I wonder if we should keep READINC as access pattern. It seems to be very LFRic-specific? From a dependency point of view ... do we even need |
I think the runner had hit trouble so I've restarted it. |
The compilation tests failed because my fix to compilation of nemo/eg6 revealed that the new 'generic' extraction lib was not being cleaned properly (and thus we had a .mod file from gfortran that nvfortran then wouldn't accept). I hope I've fixed this and have restarted the integration tests. |
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.
Thanks for all the clean up @arporter , the PR is almost ready but the compilation test is still failing, and I made some very small comments.
Finally got the compilation test fixed. I think the original error in the Makefile meant we never attempted to recompile nemo/eg6 with nvfortran (because of files left over from the gnu build) and, once I fixed that, it revealed that we weren't setting the compiler flags correctly. This should be ready for another look now. |
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.
Fantastic, all tests are green now, this is approved for merging. Good job @arporter
I found I needed some of this in #2716 (while improving KernelModuleInlineTrans) so I thought I'd best do it as a separate PR.
This also fixes #2849 where we were incorrectly hoisting assignments out of loops.