hpx/parcelport_libfabric/libfabric_controller.hpp

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

Defines

HPX_PARCELPORT_LIBFABRIC_ENDPOINT_MSG
namespace hpx
namespace parcelset
namespace policies
namespace libfabric

Typedefs

typedef std::shared_ptr<libfabric_controller> libfabric_controller_ptr
class libfabric_controller

Public Types

typedef hpx::spinlock mutex_type
typedef hpx::parcelset::policies::libfabric::unique_lock<mutex_type> unique_lock
typedef hpx::parcelset::policies::libfabric::scoped_lock<mutex_type> scoped_lock
typedef std::tuple<hpx::promise<fid_ep*>, hpx::shared_future<fid_ep*>> promise_tuple_type
typedef hpx::concurrent::unordered_map<uint32_t, promise_tuple_type>::map_read_lock_type map_read_lock_type
typedef hpx::concurrent::unordered_map<uint32_t, promise_tuple_type>::map_write_lock_type map_write_lock_type
typedef hpx::function<void(fid_ep *endpoint, uint32_t ipaddr)> ConnectionFunction
typedef hpx::function<void(fid_ep *endpoint, uint32_t ipaddr)> DisconnectionFunction

Public Functions

libfabric_controller(std::string const &provider, std::string const &domain, std::string const &endpoint, int = 7910)
void boot_PMI()
~libfabric_controller()
void open_fabric(std::string const &provider, std::string const &domain, std::string const &endpoint_type)
void startup(parcelport *pp)
void _set_check_domain_op_value(int op, const char *value)
void _set_disable_registration()
void create_event_queue()
locality create_local_endpoint()
void new_endpoint_active(struct fi_info *info, struct fid_ep **new_endpoint)
void bind_endpoint_to_queues(struct fid_ep *endpoint)
void bind_passive_endpoint_to_queues(struct fid_pep *endpoint)
void initialize_localities()
fi_addr_t get_fabric_address(const locality &dest_fabric)
const locality &here() const
const bool &immedate_data_supported() const
bool isTerminated()
void setConnectionFunction(ConnectionFunction f)
void setDisconnectionFunction(DisconnectionFunction f)
int poll_endpoints(bool stopped = false)
int poll_for_work_completions()
int poll_send_queue()
int poll_recv_queue()
int poll_event_queue(bool = false)
struct fid_domain *get_domain()
rma_memory_pool<libfabric_region_provider> &get_memory_pool()
void create_completion_queues(struct fi_info *info, int N)
std::pair<bool, hpx::shared_future<struct fid_ep*>> insert_new_future(uint32_t remote_ip)
fi_addr_t insert_address(const locality &remote)
hpx::shared_future<struct fid_ep*> connect_to_server(const locality &remote)
void disconnect_all()
bool active()

Public Members

hpx::concurrent::unordered_map<uint32_t, promise_tuple_type> endpoint_tmp_
std::unordered_map<uint64_t, fi_addr_t> endpoint_av_
locality here_
locality agas_
struct fi_info *fabric_info_
struct fid_fabric *fabric_
struct fid_domain *fabric_domain_
struct fid_pep *ep_passive_
struct fid_ep *ep_active_
struct fid_ep *ep_shared_rx_cxt_
struct fid_eq *event_queue_
struct fid_cq *txcq_
struct fid_cq *rxcq_
struct fid_av *av_
bool immediate_

Private Types

typedef std::chrono::time_point<std::chrono::system_clock> time_type

Private Members

std::string device_
std::string interface_
sockaddr_in local_addr_
ConnectionFunction connection_function_
DisconnectionFunction disconnection_function_
std::unique_ptr<rma_memory_pool<libfabric_region_provider>> memory_pool_
std::vector<receiver> receivers_
mutex_type initialization_mutex_
mutex_type endpoint_map_mutex_
mutex_type polling_mutex_
time_type event_check_time_
uint32_t event_pause_