-
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
base: master
Are you sure you want to change the base?
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 50833 50919 +86
=======================================
+ Hits 50777 50864 +87
+ 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 |
… from VariablesAccessInfo
…s instead of marking everything READ
Sphinx link check failed on the NEMO homepage with a timeout. |
This is ready for another look now. I've kept the |
Also towards #1792. |
The integration test failure was a small thing in SymbolTable that I'd already fixed in another PR so I've brought those changes into this one. I'll re-launch the integration tests if the CI is happy. |
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.