Cabana 0.8.0-dev
 
Loading...
Searching...
No Matches
Cabana_Distributor.hpp File Reference

Multi-node particle redistribution. More...

#include <Cabana_AoSoA.hpp>
#include <Cabana_CommunicationPlan.hpp>
#include <Cabana_Slice.hpp>
#include <Kokkos_Core.hpp>
#include <Kokkos_Profiling_ScopedRegion.hpp>
#include <mpi.h>
#include <exception>
#include <vector>
Include dependency graph for Cabana_Distributor.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Cabana::Distributor< MemorySpace >
 A communication plan for migrating data from one uniquely-owned decomposition to another uniquely owned decomposition. More...
 
struct  Cabana::is_distributor< T >
 Distributor static type checker. More...
 

Namespaces

namespace  Cabana
 Core: particle data structures and algorithms.
 

Functions

template<class ExecutionSpace, class Distributor_t, class AoSoA_t>
void Cabana::migrate (ExecutionSpace exec_space, const Distributor_t &distributor, const AoSoA_t &src, AoSoA_t &dst, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_aosoa< AoSoA_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Multiple AoSoA version.
 
template<class Distributor_t, class AoSoA_t>
void Cabana::migrate (const Distributor_t &distributor, const AoSoA_t &src, AoSoA_t &dst, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_aosoa< AoSoA_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Multiple AoSoA version.
 
template<class ExecutionSpace, class Distributor_t, class AoSoA_t>
void Cabana::migrate (ExecutionSpace exec_space, const Distributor_t &distributor, AoSoA_t &aosoa, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_aosoa< AoSoA_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Single AoSoA version that will resize in-place. Note that resizing does not necessarily allocate more memory. The AoSoA memory will only increase if not enough has already been reserved/allocated for the needed number of elements.
 
template<class Distributor_t, class AoSoA_t>
void Cabana::migrate (const Distributor_t &distributor, AoSoA_t &aosoa, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_aosoa< AoSoA_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Single AoSoA version that will resize in-place. Note that resizing does not necessarily allocate more memory. The AoSoA memory will only increase if not enough has already been reserved/allocated for the needed number of elements.
 
template<class ExecutionSpace, class Distributor_t, class Slice_t>
void Cabana::migrate (ExecutionSpace, const Distributor_t &distributor, const Slice_t &src, Slice_t &dst, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_slice< Slice_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Slice version. The user can do this in-place with the same slice but they will need to manage the resizing themselves as we can't resize slices.
 
template<class Distributor_t, class Slice_t>
void Cabana::migrate (const Distributor_t &distributor, const Slice_t &src, Slice_t &dst, typename std::enable_if<(is_distributor< Distributor_t >::value &&is_slice< Slice_t >::value), int >::type *=0)
 Synchronously migrate data between two different decompositions using the distributor forward communication plan. Slice version. The user can do this in-place with the same slice but they will need to manage the resizing themselves as we can't resize slices.
 

Detailed Description

Multi-node particle redistribution.