15#include "lci_config.hpp"
327 return reinterpret_cast<uintptr_t
>(
p_impl) < 3;
444 void*
allocate(
size_t size) {
return malloc(size); }
509 return reinterpret_cast<uintptr_t
>(
p_impl) <= 1;
525 attr.zero_copy_am =
false;
527 attr.user_context =
nullptr;
546using reduce_op_t = void (*)(
const void* left,
const void* right,
void* dst,
642#if __cplusplus >= 201703L
646 auto op =
static_cast<T*
>(value);
647 using result_t = std::invoke_result_t<T>;
649 if constexpr (std::is_same_v<result_t, status_t>) {
652 }
else if constexpr (std::is_same_v<result_t, errorcode_t>) {
663typename std::enable_if<
664 std::is_same<
typename std::result_of<T()>::type,
status_t>::value,
668 auto op =
static_cast<T*
>(value);
675typename std::enable_if<
676 std::is_same<
typename std::result_of<T()>::type,
errorcode_t>::value,
680 auto op =
static_cast<T*
>(value);
687typename std::enable_if<
688 !std::is_same<
typename std::result_of<T()>::type, status_t>::value &&
689 !std::is_same<
typename std::result_of<T()>::type,
errorcode_t>::value,
693 auto op =
static_cast<T*
>(value);
702 auto op =
static_cast<T*
>(value);
721 .
value(
reinterpret_cast<void*
>(fn))
723 fn->user_context(ret);
Completion object implementation base type.
Definition lci.hpp:519
comp_impl_t(const attr_t &attr_)
Definition lci.hpp:529
virtual ~comp_impl_t()=default
comp_impl_t()
Definition lci.hpp:522
comp_attr_t attr
Definition lci.hpp:532
comp_attr_t attr_t
Definition lci.hpp:521
virtual void signal(status_t)=0
The actual implementation for RESOURCE comp.
Definition lci_binding_pre.hpp:516
bool is_empty() const
Definition lci.hpp:507
comp_impl_t * p_impl
Definition lci_binding_pre.hpp:528
The actual implementation for graph_add_node.
Definition lci_binding_post.hpp:3466
graph_add_node_x && free_cb(graph_node_free_cb_t free_cb_in)
Definition lci_binding_post.hpp:3482
graph_add_node_x && value(void *value_in)
Definition lci_binding_post.hpp:3481
The actual implementation for RESOURCE mr.
Definition lci_binding_pre.hpp:316
mr_impl_t * p_impl
Definition lci_binding_pre.hpp:323
bool is_empty() const
Definition lci.hpp:325
graph_node_t graph_add_node_op(comp_t graph, const T &op)
Add a functor as a node to the completion graph.
Definition lci.hpp:715
broadcast_algorithm_t
The type of broadcast algorithm.
Definition lci.hpp:235
errorcode_t
The actual error code for LCI API functions.
Definition lci.hpp:125
void(*)(status_t status, void *src_value, void *dst_value) graph_edge_run_cb_t
The function signature for a edge funciton in the completion graph.
Definition lci.hpp:587
void set_g_default_attr(const global_attr_t &attr)
Set the default global attributes for LCI.
const rmr_t RMR_NULL
The NULL value of rkey_t.
Definition lci.hpp:351
uint64_t matching_entry_key_t
The type of matching engine entry key.
Definition lci.hpp:413
const mr_t MR_DEVICE
A special mr_t value for device memory.
Definition lci.hpp:316
const int ANY_SOURCE
Special rank value for any-source receive.
Definition lci.hpp:380
void global_initialize()
Global initialization for LCI, including rank_me, rank_n, and g_default_attr.
status_t(*)(void *value) graph_node_run_cb_t
The function signature for a node function in the completion graph.
Definition lci.hpp:566
net_opcode_t
The Type of network communication operation codes.
Definition lci.hpp:216
const mr_t MR_HOST
A special mr_t value for host memory.
Definition lci.hpp:310
direction_t
The enum class of comunication direction.
Definition lci.hpp:363
void(*)(void *value) graph_node_free_cb_t
The function signature for a callback that will be triggered when the node was freed.
Definition lci.hpp:581
void(*)(const void *left, const void *right, void *dst, size_t n) reduce_op_t
The user-defined reduction operation.
Definition lci.hpp:546
int get_rank_n()
Get the number of ranks in the current application/job.
matching_policy_t
Enum class for matching policy.
Definition lci.hpp:402
void * graph_node_t
The node type for the completion graph.
Definition lci.hpp:552
const tag_t ANY_TAG
Special tag value for any-tag receive.
Definition lci.hpp:386
const graph_node_run_cb_t GRAPH_NODE_DUMMY_CB
A dummy callback function for a graph node.
Definition lci.hpp:574
allreduce_algorithm_t
The type of allreduce algorithm.
Definition lci.hpp:271
int get_rank_me()
Get the rank of the current process.
reduce_scatter_algorithm_t
The type of reduce scatter algorithm.
Definition lci.hpp:253
const comp_t COMP_NULL_EXPECT_DONE
Deprecated. Same as COMP_NULL.
Definition lci.hpp:491
const mr_t MR_UNKNOWN
A special mr_t value for unknown memory. LCI will detect the memory type automatically.
Definition lci.hpp:323
void * matching_entry_val_t
The type of matching engine entry value.
Definition lci.hpp:418
void global_finalize()
Global finalization for LCI.
matching_entry_type_t
The type of matching entry.
Definition lci.hpp:393
uint32_t rcomp_t
The type of remote completion handler.
Definition lci.hpp:374
void(*)(status_t status) comp_handler_t
Function Signature for completion handler.
Definition lci.hpp:539
const graph_node_t GRAPH_START
The start node of the completion graph.
Definition lci.hpp:558
const comp_t COMP_NULL
Special completion object setting allow_posted and allow_retry to false.
Definition lci.hpp:485
const comp_t COMP_NULL_EXPECT_DONE_OR_RETRY
Deprecated. Same as COMP_NULL_RETRY.
Definition lci.hpp:504
uint64_t tag_t
The type of tag.
Definition lci.hpp:357
global_attr_t get_g_default_attr()
Get the default global attributes for LCI. The default global attributes contain the default attribut...
comp_semantic_t
The enum class of completion semantic.
Definition lci.hpp:428
uint32_t net_imm_data_t
The type of network-layer immediate data field.
Definition lci.hpp:290
const comp_t COMP_NULL_RETRY
Special completion object setting allow_posted to false.
Definition lci.hpp:498
@ ring
Definition lci.hpp:239
@ direct
Definition lci.hpp:237
@ tree
Definition lci.hpp:238
@ retry
Definition lci.hpp:138
@ retry_nopacket
Definition lci.hpp:142
@ done_max
Definition lci.hpp:130
@ posted_backlog
Definition lci.hpp:134
@ done
Definition lci.hpp:127
@ retry_min
Definition lci.hpp:137
@ done_min
Definition lci.hpp:126
@ retry_lock
Definition lci.hpp:141
@ posted_min
Definition lci.hpp:131
@ retry_max
Definition lci.hpp:148
@ posted
Definition lci.hpp:132
@ retry_backlog
Definition lci.hpp:146
@ retry_init
Definition lci.hpp:140
@ done_backlog
Definition lci.hpp:128
@ retry_nomem
Definition lci.hpp:144
@ fatal
Definition lci.hpp:149
@ posted_max
Definition lci.hpp:136
@ READ
Definition lci.hpp:221
@ SEND
Definition lci.hpp:217
@ REMOTE_WRITE
Definition lci.hpp:220
@ RECV
Definition lci.hpp:218
@ WRITE
Definition lci.hpp:219
@ IN
Definition lci.hpp:365
@ OUT
Definition lci.hpp:364
@ max
Definition lci.hpp:407
@ rank_tag
Definition lci.hpp:406
@ tag_only
Definition lci.hpp:405
@ rank_only
Definition lci.hpp:404
@ send
Definition lci.hpp:394
@ recv
Definition lci.hpp:395
@ network
Definition lci.hpp:430
@ memory
Definition lci.hpp:429
All LCI API functions and classes are defined in this namespace.
const char * get_allreduce_algorithm_str(broadcast_algorithm_t algorithm)
Get the string representation of a collective algorithm.
attr_backend_t
Definition lci.hpp:66
@ none
Definition lci.hpp:67
@ ibv
Definition lci.hpp:68
@ ofi
Definition lci.hpp:69
@ ucx
Definition lci.hpp:70
const char * DEFAULT_NAME
const graph_node_t GRAPH_END
Definition lci.hpp:559
const char * get_reduce_scatter_algorithm_str(broadcast_algorithm_t algorithm)
Get the string representation of a collective algorithm.
allocator_default_t g_allocator_default
@ custom
Definition lci_binding_pre.hpp:64
@ graph
Definition lci_binding_pre.hpp:63
const char * get_errorcode_str(errorcode_t errorcode)
Get the string representation of an error code.
void graph_free_op_fn(void *value)
Definition lci.hpp:700
attr_net_lock_mode_t
Definition lci.hpp:73
@ LCI_NET_LOCK_MR
Definition lci.hpp:77
@ LCI_NET_TRYLOCK_POLL
Definition lci.hpp:76
@ LCI_NET_TRYLOCK_SEND
Definition lci.hpp:74
@ LCI_NET_LOCK_ALL
Definition lci.hpp:78
@ LCI_NET_TRYLOCK_RECV
Definition lci.hpp:75
@ LCI_NET_TRYLOCK_MAX
Definition lci.hpp:80
const char * get_net_opcode_str(net_opcode_t opcode)
Get the string representation of a network operation code.
std::enable_if< std::is_same< typenamestd::result_of< T()>::type, status_t >::value, status_t >::type graph_execute_op_fn(void *value)
Definition lci.hpp:666
const char * get_broadcast_algorithm_str(broadcast_algorithm_t algorithm)
Get the string representation of a collective algorithm.
The user-defined allocator type.
Definition lci.hpp:437
virtual ~allocator_base_t()=default
virtual void deallocate(void *ptr)=0
virtual void * allocate(size_t size)=0
void * allocate(size_t size)
Definition lci.hpp:444
void deallocate(void *ptr)
Definition lci.hpp:445
Definition lci_binding_pre.hpp:144
Wrapper class for error code.
Definition lci.hpp:166
bool is_done() const
Check if the error code is in the done category.
Definition lci.hpp:182
error_t()
Definition lci.hpp:168
bool is_posted() const
Check if the error code is in the posted category.
Definition lci.hpp:191
const char * get_str() const
Get the string representation of the error code.
Definition lci.hpp:209
errorcode_t errorcode
Definition lci.hpp:167
void reset_retry()
Reset the error code to retry.
Definition lci.hpp:177
error_t(errorcode_t errorcode_)
Construct an error_t object with a specific error code.
Definition lci.hpp:173
bool is_retry() const
Check if the error code is in the retry category.
Definition lci.hpp:200
Definition lci_binding_pre.hpp:154
The struct for network status.
Definition lci.hpp:298
net_imm_data_t imm_data
Definition lci.hpp:303
int rank
Definition lci.hpp:300
void * user_context
Definition lci.hpp:301
net_opcode_t opcode
Definition lci.hpp:299
size_t length
Definition lci.hpp:302
bool m_is_set
Definition lci.hpp:106
option_t()
Definition lci.hpp:86
T get_value() const
Definition lci.hpp:102
T get_value_or(T default_value) const
Definition lci.hpp:90
bool get_set_value(T *value) const
Definition lci.hpp:94
T m_value
Definition lci.hpp:105
option_t(T value_, bool is_set_)
Definition lci.hpp:88
bool is_set() const
Definition lci.hpp:103
option_t(T value_)
Definition lci.hpp:87
The type of remote memory region.
Definition lci.hpp:336
uintptr_t mr_base
Definition lci.hpp:338
uintptr_t base
Definition lci.hpp:337
bool is_empty() const
Definition lci.hpp:341
uint64_t opaque_rkey
Definition lci.hpp:339
rmr_t()
Definition lci.hpp:340
The type of the completion desciptor for a posted communication.
Definition lci.hpp:453
tag_t get_tag() const
Definition lci.hpp:476
status_t(errorcode_t error_)
Definition lci.hpp:461
status_t(void *user_context_)
Definition lci.hpp:462
error_t get_error() const
Definition lci.hpp:472
void set_retry()
Definition lci.hpp:468
void * get_user_context() const
Definition lci.hpp:477
error_t error
Definition lci.hpp:454
void set_done()
Definition lci.hpp:466
tag_t tag
Definition lci.hpp:458
size_t size
Definition lci.hpp:457
void set_posted()
Definition lci.hpp:467
bool is_done() const
Definition lci.hpp:469
void * buffer
Definition lci.hpp:456
void * user_context
Definition lci.hpp:459
bool is_posted() const
Definition lci.hpp:470
bool is_retry() const
Definition lci.hpp:471
int get_rank() const
Definition lci.hpp:473
void * get_buffer() const
Definition lci.hpp:474
int rank
Definition lci.hpp:455
size_t get_size() const
Definition lci.hpp:475