LLNL / conduit

Simplified Data Exchange for HPC Simulations

Home Page:https://software.llnl.gov/conduit/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mesh blueprint mpi distribute

cyrush opened this issue · comments

Refactor existing code from ascent that ships domains around into conduit for wider use.

This is a send/recv any-to-any case, where the payload is always valid mesh blueprint domains.

Extend current code to include domain replication.

This is a much simpler case than mpi partition, which actually cuts and merges domains. This only moves entire domains.

Implement generic interface that accepts domain to dest task map.

I expect these maps to be similar in spirit to results from generate_domain_to_rank_map` - however with replication they may be multi-valued, a rank can be on multiple mpi tasks.

From this, there are specific cases that we can implement via the general machinery:

  • split comm (current ascent case, used for multi program mpi execution) input param: rank of split.
  • simple replication (n domains, distributed to m tasks) input param: desired final number of tasks or # of times each domain is replicated? Need to check the desired use case.

With new mpi infra in conduit added a general solution in #1069

Didn't need to leverage ascent logic, new logic is better b/c it uses isend/irecv.

Ascent's special case logic for split MPI should be refactor to use this new logic from #1069.

Resolved in #1069