DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
ArrayRedistributor.hpp File Reference

Redistributes ArrayPair data across different MPI partitions using ArrayTransformer. More...

#include "ArrayTransformer.hpp"
#include "SerializerBase.hpp"
#include <unordered_map>
#include <algorithm>
#include <numeric>
Include dependency graph for ArrayRedistributor.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  DNDS
 the host side operators are provided as implemented
 

Functions

std::vector< indexDNDS::BuildRedistributionPullingIndex (const MPIInfo &mpi, const std::vector< index > &readOrigIndex, const std::vector< index > &newOrigIndex, const ssp< GlobalOffsetsMapping > &readGlobalMapping)
 Redistributes ArrayPair data between different MPI partitions using ArrayTransformer.
 
template<class TArray >
void DNDS::RedistributeArrayWithTransformer (const MPIInfo &mpi, ssp< TArray > readFather, const std::vector< index > &readOrigIndex, const std::vector< index > &newOrigIndex, ssp< TArray > outFather)
 Redistributes an ArrayPair from a source partition to a target partition.
 

Detailed Description

Redistributes ArrayPair data across different MPI partitions using ArrayTransformer.

Enables reading HDF5 checkpoint data written with partition A (np=N) into partition B (np=M) by using an "original index" (e.g., CGNS serial cell index) as a partition-independent key.

The redistribution uses a two-step rendezvous pattern implemented via temporary ArrayTransformer pull operations: Step 1: Each rank reads an even slice of the H5 global data. Step 2: A temporary ArrayTransformer pulls each rank's needed cells (identified by origIndex) from whichever rank read them.

Definition in file ArrayRedistributor.hpp.