Replies: 2 comments
-
|
Nels and I discussed the calling being independent vs collective, and concluded that for a baseline "MPI parallel BMI" extension, collective would be fine for NWM NextGen. If we get to the point where we have components that would benefit from more asynchronous execution, and a need to enable it for application demands, then we can define a follow-on "asynchronous MPI parallel BMI" extension that specifies this differently. |
Beta Was this translation helpful? Give feedback.
-
|
I opened a stand-alone discussion on instantiation in #142, since that really should get some sort of resolution independent of any parallel extension. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
On 2024 Feb 29, we held a third meeting (over Zoom) to discuss how BMI could work in a parallel environment. In attendance were @hrajagers, @scrasmussen, @mcflugen, @rcabell, @PhilMiller, @jdhughes-usgs, @mjr-deltares, @gregtucker, @hellkite500, and @mdpiper. (These are Mark's clumsy notes.)
Soren on his work with Ryan on WRF-Hydro:
Phil: Don't call MPI_Finalize in a component. Call it in driver code instead. Next version of MPI (4.0) will have a better way of handling this, so every component will be able to call its own initializer and finalizer. Procedure that fits with MPI 3: Call MPI_Init in driver. Initialize components, passing communicator, Finalize components. Call MPI_Finalize in driver.
Martijn on MODFLOW 6:
Phil on his work on the NextGen framework:
Bert: This touches on the general issue of extensions.
Eric: We've thought about this a bit, and have made examples in Python and Fortran.
Phil: It looks like we're on a good path with extensions.
Bert: Was following ESMF and OASIS. But this can be changed.
Bert generalizes the discussion to extensions:
Nels: That gets really complicated then to define what is “BMI Compliant” if an extension is required, the core BMI is no longer the “contract”
Phil:
Nels: So the extensions are essentially implemented alongside the BMI core implementation, just namespace separated via what is bound to a BMI struct and what is bound to either free function extensions or an extension struct bound to the core BMI structure
Phil: Leans toward OO instead of free functions
Things we need to work on: Instantiation, collective/independent calls, extension design.
Meet again in a few weeks.
Beta Was this translation helpful? Give feedback.
All reactions