-
Notifications
You must be signed in to change notification settings - Fork 38
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
Improve error handling for GPU code path unimplemented features #193
Conversation
cce2be1
to
76eb4a2
Compare
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.
Approved pending questions above.
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.
I am fine with these changes. For the future, in order to fix those (implement LDSETUPONLZ and GRIDONLY), it might help if we could define what they actually mean. At least I always struggled with what it actually means, which variables have to be set, and which don't.
Thanks @lukasm91 I promised I would make some tests for these setups but I got sidetracked mid-way. When I have time I will still create those tests, and perhaps add an option to disable the workarounds added in this PR so we can get an actual failure. |
…t yet implemented
…ths, rather than MPL_ABORT
76eb4a2
to
e0cfb0c
Compare
Now rebased on develop |
All following changes are required to more gracefully integrate ectrans GPU code paths in atlas via transi.
Workaround to avoid some unimplemented gpu-code path features:
The workarounds consists in ignoring the "ONLY" setup and setting everything up with a low truncation or grid resolution. Not ideal but a sufficient temporary solution.
This avoids special handling in downstream code like Atlas that would otherwise perform the same tricks.
Calling of ABORT_TRANS for other unimplemented gpu-code path features:
Now we don't get obscure errors or segfaults in lower-level code paths
Unsupported known gpu code paths called from within transi are now protected explicitly with error return codes rather than hard failures that cannot be recovered from. These error return codes should be removed as features are implemented of course:
- trans_vordiv_to_UV
- trans_dirtrans_adj
- trans_invtrans_adj
- trans_setup with llatlon=true
This now means that atlas unit-tests can choose to ignore unimplemented features via exception handling