[Refactor | Feature] Introducing NDSL backend#370
Conversation
Add stencil dace backends
|
This is ready for a first review @twicki / @romanc It's MASSIVE change, focus on config/backend.py which is the true change that gets propagated everywhere. ToDo:
|
romanc
left a comment
There was a problem hiding this comment.
This refactor is so overdue - thanks digging in!
Two general comments w.r.t. the planned API refactor #243
- Where does
ndsl/config/backend.pyfit into the newly thought directory structure? - Is it possible to avoid
from ndsl import Backendinside NDSL? Might not be possible, but if we can avoid it now, we have less work later. I've only seen two of these imports: indace_config.pyandrefine_transients.py.
For docs, the entry in mkdocs.yaml and the "corresponding md file" are missing. We need to automate / tool this up in the future ... it's too much manual work and easily forgotten.
romanc
left a comment
There was a problem hiding this comment.
Thanks for all the changes. I was starting to think how we are going to merge this PR with as little CI disruption as possible. I'd propose the following process
- with this PR, we skip the CI hooks to pyFV3, pySHiELD, and pace
- we prepare PRs in pyFV3, pySHiELD, and pace to update to NDSL 2026.02.00 (those could be used1 to check that this PR doesn't break anything after updating)
- we merge this PR as the last one before the February release
- we release NDSL 2026.02.00
- we update pyFV3, pySHiELD, and pace to 2026.02.00
- we re-enable the CI hooks in NDSL as the first PR after the release
What do you think? Too much over-engineering and -thinking?
Footnotes
-
by temporarily pointing the CI hooks of NDSL towards these branches instead of skipping them. ↩
|
|
|
PR ready for show.
|
8889d58 to
f252102
Compare
Required status checks require us to run these exact hooks (admins might have powers that I don't have). However, what we can is to point to any fork and just have a noop workflow there. This way we can merge and release. Once released and updated, we can restore the default hooks.
f252102 to
01e8717
Compare
🚀 BREAKING CHANGE - Scheduled for 2026.02.00
Description
Historically
backendargument has always directly related togt4py's backend. But with time and more and more usage ofdace, we have added orchestration, leading to a split in the concept.Also, we are more and more specializing code/optimizations by backend which calls for centralization.
Lastly, the
backendnaming scheme makes sense for the framework developer (of gt4py or dace) but not for the ndsl user.This PR aims at introducing a NDSL backend concept solving all the above:
Also:
gt4py_utils.is_gpu_backendin favor of inlinedBackend.is_gpu_backendgt4py_utils.is_fortran_alignedin favor of inlinedBackend.is_fortran_alignedHow has this been tested?
Unit tests will run and decide it's fate.
pyFV3update PR |pySHiELDupdate PR |paceupdate PRChecklist