-
Notifications
You must be signed in to change notification settings - Fork 14
API and Functionality
Mauro Bianco edited this page May 1, 2019
·
2 revisions
Summary of discussion on API and functionality for GHEX
- Regular vs. unstructured Grid
- Message passing vs. remote direct memory access
- Backends (GPU, MC, ...)
- Threading model (work threads vs. computing task)
2x2x2x2=16
- Neighbors are found using a collective setup phase
- We rely on MPI for this (for now)
- Neighbor concepts must be designed for both structured (directions?) and unstructured grids
- Unstructured and structured domains must be able to communicate (for FVM)
- Communication libraries shall be abstracted by basic API for Message Passing and Remote Memory
- Inspiration: UCX, libfabric, MPI, ...
- Or we could use UCX directly (it is already a low-level abstraction) ...?
- MPI is still required for the setup phase (for now )
- Buffer space computed and allocated in "setup phase" (requires compile time knowledge of fields to be communicated)
- Buffer space computed and allocated in actual exchange (performance?)
- Buffer space computed the first time the data is collected (similar to std::vector, but this would be hard on GPUs) and then reused in the subsequent calls (and eventually adapted is more is needed)
- Should phases like packing, unpacking, send, recv etc be exposed publicly?
- GHEX shall be implemented for threaded application
- Different threading models with different requirements on execution enginge and communication
- We should not focus on the simple GCL test case
- FVM model should be our focus (mixed structured and unstructured)
- Look at papers for hybrid structured/unstructured codes/communication