Loading...
Searching...
No Matches
communication.hpp File Reference
#include <ranges>
#include <variant>
#include <vector>
#include "dense/vec.hpp"
#include "grid/grid_types.hpp"
#include "grid/shell/spherical_shell.hpp"
#include "terra/communication/buffer_copy_kernels.hpp"

Go to the source code of this file.

Classes

class  terra::communication::shell::SubdomainNeighborhoodSendRecvBuffer< ScalarType, VecDim >
 Send and receive buffers for all process-local subdomain boundaries. More...
 

Namespaces

namespace  terra
 
namespace  terra::communication
 
namespace  terra::communication::shell
 
namespace  terra::communication::shell::detail
 

Functions

template<class GridViewT >
auto terra::communication::shell::detail::make_unmanaged_like (typename GridViewT::value_type *ptr, int n0=0, int n1=0, int n2=0)
 
template<typename GridDataType >
void terra::communication::shell::pack_send_and_recv_local_subdomain_boundaries (const grid::shell::DistributedDomain &domain, const GridDataType &data, SubdomainNeighborhoodSendRecvBuffer< typename GridDataType::value_type, grid::grid_data_vec_dim< GridDataType >() > &boundary_send_buffers, SubdomainNeighborhoodSendRecvBuffer< typename GridDataType::value_type, grid::grid_data_vec_dim< GridDataType >() > &boundary_recv_buffers)
 Packs, sends and recvs local subdomain boundaries using two sets of buffers.
 
template<typename GridDataType >
void terra::communication::shell::unpack_and_reduce_local_subdomain_boundaries (const grid::shell::DistributedDomain &domain, const GridDataType &data, SubdomainNeighborhoodSendRecvBuffer< typename GridDataType::value_type, grid::grid_data_vec_dim< GridDataType >() > &boundary_recv_buffers, CommunicationReduction reduction=CommunicationReduction::SUM)
 Unpacks and reduces local subdomain boundaries.
 
template<typename ScalarType >
void terra::communication::shell::send_recv (const grid::shell::DistributedDomain &domain, grid::Grid4DDataScalar< ScalarType > &grid, const CommunicationReduction reduction=CommunicationReduction::SUM)
 Executes packing, sending, receiving, and unpacking operations for the shell.
 
template<typename ScalarType >
void terra::communication::shell::send_recv (const grid::shell::DistributedDomain &domain, grid::Grid4DDataScalar< ScalarType > &grid, SubdomainNeighborhoodSendRecvBuffer< ScalarType > &send_buffers, SubdomainNeighborhoodSendRecvBuffer< ScalarType > &recv_buffers, const CommunicationReduction reduction=CommunicationReduction::SUM)
 Executes packing, sending, receiving, and unpacking operations for the shell.
 

Variables

constexpr int terra::communication::shell::MPI_TAG_BOUNDARY_DATA = 100