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>
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. | |
Multi-node particle redistribution.