Interface for a chunk distribution strategy. More...
#include <ChunkInfo.hpp>
Public Member Functions | |
| Assignment | assign (ChunkTable chunkTable, RankMeta const &in, RankMeta const &out, size_t my_rank, size_t num_ranks) |
| Assign chunks to be loaded to reading processes. | |
| virtual Assignment | assign (PartialAssignment partialAssignment, RankMeta const &in, RankMeta const &out, size_t my_rank, size_t num_ranks)=0 |
| Assign chunks to be loaded to reading processes. | |
| virtual std::unique_ptr< Strategy > | clone () const =0 |
Interface for a chunk distribution strategy.
Used for implementing algorithms that read a ChunkTable as produced by BaseRecordComponent::availableChunks() and produce as result a ChunkTable that guides data sinks on how to load data into reading processes.
| Assignment openPMD::chunk_assignment::Strategy::assign | ( | ChunkTable | chunkTable, |
| RankMeta const & | in, | ||
| RankMeta const & | out, | ||
| size_t | my_rank, | ||
| size_t | num_ranks ) |
Assign chunks to be loaded to reading processes.
| chunkTable | Chunk table obtained by BaseRecordComponent::availableChunks(). |
| in | Meta information on writing processes, e.g. hostnames. |
| out | Meta information on reading processes, e.g. hostnames. |
| my_rank | Rank identifier for the current process. Will be considered by some distribution strategies that may be called for only a subselection of the data space (e.g. for distributing data within processes on the same compute node in a cluster). |
| num_ranks | Number of processes among which chunks are to be distributed. Will be considered by some distribution strategies that may be called for only a subselection of the data space (e.g. for distributing data within processes on the same compute node in a cluster). |
|
pure virtual |
Assign chunks to be loaded to reading processes.
To be defined by implementors.
| partialAssignment | Two chunktables, one of unassigned chunks and one of chunks that might have already been assigned previously. Merge the unassigned chunks into the partially assigned table. |
| in | Meta information on writing processes, e.g. hostnames. |
| out | Meta information on reading processes, e.g. hostnames. |
| my_rank | Rank identifier for the current process. Will be considered by some distribution strategies that may be called for only a subselection of the data space (e.g. for distributing data within processes on the same compute node in a cluster). |
| num_ranks | Number of processes among which chunks are to be distributed. Will be considered by some distribution strategies that may be called for only a subselection of the data space (e.g. for distributing data within processes on the same compute node in a cluster). |
Implemented in openPMD::chunk_assignment::BinPacking, openPMD::chunk_assignment::Blocks, openPMD::chunk_assignment::BlocksOfSourceRanks, openPMD::chunk_assignment::ByCuboidSlice, openPMD::chunk_assignment::DiscardingStrategy, openPMD::chunk_assignment::FailingStrategy, openPMD::chunk_assignment::FromPartialStrategy, openPMD::chunk_assignment::RoundRobin, openPMD::chunk_assignment::RoundRobinOfSourceRanks, and PyStrategy.