hpx/parcelport_libfabric/rma_receiver.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace parcelset
namespace policies
namespace libfabric
struct rma_receiver : public hpx::parcelset::policies::libfabric::rma_base

Public Types

typedef libfabric_region_provider region_provider
typedef rma_memory_region<region_provider> region_type
typedef rma_memory_pool<region_provider> memory_pool_type
typedef hpx::detail::small_vector<region_type*, 8> zero_copy_vector
typedef header<HPX_PARCELPORT_LIBFABRIC_MESSAGE_HEADER_SIZE> header_type
typedef serialization::serialization_chunk chunk_struct
typedef hpx::function<void(rma_receiver*)> completion_handler

Public Functions

rma_receiver(parcelport *pp, fid_ep *endpoint, memory_pool_type *memory_pool, completion_handler &&handler)
~rma_receiver()
void read_message(region_type *region, fi_addr_t const &src_addr)
void handle_message_no_rma()
void handle_message_with_zerocopy_rma()
void handle_message_no_chunk_data()
int handle_chunks_read_message()
void handle_rma_read_completion()
void send_rdma_complete_ack()
void cleanup_receive()
void handle_error(struct fi_cq_err_entry err)
void read_chunk_list()
void read_one_chunk(fi_addr_t src_addr, region_type *get_region, const void *remoteAddr, uint64_t rkey)

Public Static Attributes

constexpr unsigned int header_size = header_type::header_block_size

Private Members

parcelport *pp_
fid_ep *endpoint_
region_type *header_region_
region_type *chunk_region_
region_type *message_region_
header_type *header_
std::vector<chunk_struct> chunks_
zero_copy_vector rma_regions_
rma_memory_pool<region_provider> *memory_pool_
fi_addr_t src_addr_
completion_handler handler_
hpx::util::atomic_count rma_count_
bool chunk_fetch_
double start_time_
performance_counter<unsigned int> msg_plain_
performance_counter<unsigned int> msg_rma_
performance_counter<unsigned int> sent_ack_
performance_counter<unsigned int> rma_reads_
performance_counter<unsigned int> recv_deletes_

Friends

friend hpx::parcelset::policies::libfabric::receiver