LCI
lci.h
Go to the documentation of this file.
1 
9 #ifndef LCI_H_
10 #define LCI_H_
11 
12 #include <stdint.h>
13 #include <stdlib.h>
14 #include <stdbool.h>
15 #include <stdio.h>
16 #include "lci_config.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
172 #define LCI_API __attribute__((visibility("default")))
173 
174 #define LCI_DEFAULT_COMP_REMOTE 0
175 // "pseudo-segment" indicating the entire address space,
176 // leading to dynamic (on-the-fly) registration
177 #define LCI_SEGMENT_ALL NULL
178 #define LCI_RANK_ANY (-1)
179 
184 typedef enum {
185  LCI_OK = 0,
193 } LCI_error_t;
194 
199 typedef enum {
203 } LCI_match_t;
204 
209 typedef enum {
212 } LCI_port_t;
213 
218 typedef enum {
220  LCI_COMPLETION_QUEUE, // completion queue
222  LCI_COMPLETION_SYNC, // synchronizer
224 
229 typedef enum {
238 
245 typedef uint32_t LCI_tag_t;
246 
251 typedef void* LCI_comp_t;
252 
253 struct LCII_mr_t;
261 typedef struct LCII_mr_t* LCI_segment_t;
262 
273  void* address;
274  size_t length;
275 };
277 
285  void* address;
286  size_t length;
287 };
289 
294 #define LCI_SHORT_SIZE 32
295 
300 typedef union {
301 #ifdef LCI_USE_AVX
302  uint8_t u8 __attribute__((vector_size(32)));
303  uint16_t u16 __attribute__((vector_size(32)));
304  uint32_t u32 __attribute__((vector_size(32)));
305  uint64_t u64 __attribute__((vector_size(32)));
306  int8_t s8 __attribute__((vector_size(32)));
307  int16_t s16 __attribute__((vector_size(32)));
308  int32_t s32 __attribute__((vector_size(32)));
309  int64_t s64 __attribute__((vector_size(32)));
310  double dbl __attribute__((vector_size(32)));
311  float flt __attribute__((vector_size(32)));
312 #else
313  char val[LCI_SHORT_SIZE];
314 #endif
315 } LCI_short_t;
316 // typedef uint64_t LCI_short_t;
317 
328 struct LCI_iovec_t {
330  LCI_lbuffer_t* lbuffers; // 8 bytes
331  int count; // 4 bytes
332 };
333 typedef struct LCI_iovec_t LCI_iovec_t; // 28 bytes
334 
339 typedef union {
340  LCI_short_t immediate; // 32 bytes
341  LCI_mbuffer_t mbuffer; // 16 bytes
342  LCI_lbuffer_t lbuffer; // 24 bytes
343  LCI_iovec_t iovec; // 28 bytes
344 } LCI_data_t;
345 
351 typedef struct {
352  /* Status of the communication. */
353  LCI_error_t flag; // 4 bytes
354  int rank; // 4 bytes
355  LCI_tag_t tag; // 4 bytes
356  LCI_data_type_t type; // 4 bytes
357  LCI_data_t data; // 32 bytes
358  void* user_context; // 8 bytes
359 } LCI_request_t;
360 
361 struct LCI_device_s;
366 typedef struct LCI_device_s* LCI_device_t;
367 
368 struct LCI_endpoint_s;
373 typedef struct LCI_endpoint_s* LCI_endpoint_t;
374 
375 struct LCI_plist_s;
380 typedef struct LCI_plist_s* LCI_plist_t;
381 
386 typedef void (*LCI_handler_t)(LCI_request_t request);
387 
392 extern int LCI_NUM_PROCESSES;
393 
398 extern int LCI_RANK;
399 
404 extern int LCI_MAX_ENDPOINTS;
405 
410 extern int LCI_MAX_TAG;
411 
417 extern int LCI_MEDIUM_SIZE;
418 
423 extern int LCI_IOVEC_SIZE;
424 
431 extern int LCI_DEFAULT_TABLE_LENGTH;
432 
439 extern int LCI_MAX_TABLE_LENGTH;
440 
446 extern int LCI_DEFAULT_QUEUE_LENGTH;
447 
453 extern int LCI_MAX_QUEUE_LENGTH;
454 
460 extern int LCI_MAX_SYNC_LENGTH;
461 
472 extern int LCI_PACKET_RETURN_THRESHOLD;
473 
482 extern int LCI_IBV_USE_ODP;
483 
488 extern int LCI_TOUCH_LBUFFER;
489 
497 extern int LCI_USE_DREG;
498 
506 extern int LCI_IBV_USE_PREFETCH;
507 
512 extern int LCI_PACKET_SIZE;
513 
518 extern int LCI_SERVER_NUM_PKTS;
519 
524 extern int LCI_SERVER_MAX_SENDS;
525 
530 extern int LCI_SERVER_MAX_RECVS;
531 
536 extern int LCI_SERVER_MAX_CQES;
537 
543 
550 extern int LCI_SINGLE_THREAD_PROGRESS;
551 
556 extern int LCI_SEND_SLOW_DOWN_USEC;
557 
562 extern int LCI_RECV_SLOW_DOWN_USEC;
563 
569 
575 
581 extern LCI_comp_t LCI_UR_CQ;
582 
590 LCI_API
600 LCI_API
601 LCI_error_t LCI_initialized(int* flag);
609 LCI_API
619 LCI_API
628 LCI_API
637 LCI_API
646 LCI_API
655 LCI_API
665 LCI_API
674 LCI_API
675 LCI_error_t LCI_plist_decode(LCI_plist_t plist, char* string);
684 LCI_API
696 LCI_API
698  LCI_comp_type_t comp_type);
709 LCI_API
720 LCI_API
722  LCI_plist_t plist);
730 LCI_API
744 LCI_API
746  LCI_tag_t tag);
759 LCI_API
761  LCI_tag_t tag);
776 LCI_API
778  LCI_tag_t tag);
795 LCI_API
797  LCI_tag_t tag, LCI_comp_t completion, void* user_context);
811 LCI_API
813  LCI_comp_t completion, void* user_context);
828 LCI_API
830  LCI_tag_t tag, LCI_comp_t completion, void* user_context);
846 LCI_API
848  LCI_comp_t completion, void* user_context);
862 LCI_API
864  LCI_tag_t tag, LCI_comp_t completion, void* user_context);
880 LCI_API
882  LCI_tag_t tag, uintptr_t remote_completion);
899 LCI_API
901  LCI_tag_t tag, uintptr_t remote_completion);
919 LCI_API
921  LCI_tag_t tag, uintptr_t remote_completion);
941 LCI_API
943  LCI_comp_t completion, int rank, LCI_tag_t tag,
944  uintptr_t remote_completion, void* user_context);
965 LCI_API
967  LCI_comp_t completion, int rank, LCI_tag_t tag,
968  uintptr_t remote_completion, void* user_context);
976 LCI_API
977 size_t LCI_get_iovec_piggy_back_size(int count);
987 LCI_API
997 LCI_API
1010 LCI_API
1023 LCI_API
1039 LCI_API
1040 LCI_error_t LCI_queue_pop_multiple(LCI_comp_t cq, size_t request_count,
1041  LCI_request_t* requests,
1042  size_t* return_count);
1056 LCI_API
1057 LCI_error_t LCI_queue_wait_multiple(LCI_comp_t cq, size_t request_count,
1058  LCI_request_t* requests);
1067 LCI_API
1068 LCI_error_t LCI_queue_len(LCI_comp_t cq, size_t* len);
1069 
1081 LCI_API
1082 LCI_error_t LCI_sync_create(LCI_device_t device, int threshold,
1083  LCI_comp_t* completion);
1092 LCI_API
1093 LCI_error_t LCI_sync_free(LCI_comp_t* completion);
1105 LCI_API
1119 LCI_API
1120 LCI_error_t LCI_sync_wait(LCI_comp_t completion, LCI_request_t request[]);
1134 LCI_API
1135 LCI_error_t LCI_sync_test(LCI_comp_t completion, LCI_request_t request[]);
1147 LCI_API
1149  LCI_comp_t* completion);
1159 LCI_API
1171 LCI_API
1172 LCI_error_t LCI_memory_register(LCI_device_t device, void* address,
1173  size_t length, LCI_segment_t* segment);
1181 LCI_API
1192 LCI_API
1201 LCI_API
1213 LCI_API
1214 LCI_error_t LCI_lbuffer_alloc(LCI_device_t device, size_t size,
1215  LCI_lbuffer_t* lbuffer);
1228 LCI_API
1229 LCI_error_t LCI_lbuffer_memalign(LCI_device_t device, size_t size,
1230  size_t alignment, LCI_lbuffer_t* lbuffer);
1239 LCI_API
1241 
1242 #ifdef __cplusplus
1243 }
1244 #endif
1245 
1246 #endif
LCI_SERVER_MAX_SENDS
int LCI_SERVER_MAX_SENDS
Server's send queue length.
LCI_sync_wait
LCI_API LCI_error_t LCI_sync_wait(LCI_comp_t completion, LCI_request_t request[])
Wait for a synchronizer to be triggered. A synchronizer will be triggered if all the associated opera...
LCI_PORT_MESSAGE
@ LCI_PORT_MESSAGE
Definition: lci.h:211
LCI_queue_pop_multiple
LCI_API LCI_error_t LCI_queue_pop_multiple(LCI_comp_t cq, size_t request_count, LCI_request_t *requests, size_t *return_count)
Pop multiple entry from the completion queue. This call is nonblocking.
LCI_handler_t
void(* LCI_handler_t)(LCI_request_t request)
The active message handler type.
Definition: lci.h:386
LCI_request_t::rank
int rank
Definition: lci.h:354
LCI_device_free
LCI_API LCI_error_t LCI_device_free(LCI_device_t *device_ptr)
Initialize a device.
LCI_request_t
Request object. Completion mechanisms will write completion information to it.
Definition: lci.h:351
LCI_SERVER_NUM_PKTS
int LCI_SERVER_NUM_PKTS
Total number of packets.
LCI_tag_t
uint32_t LCI_tag_t
Tag type.
Definition: lci.h:245
LCI_plist_set_comp_type
LCI_API LCI_error_t LCI_plist_set_comp_type(LCI_plist_t plist, LCI_port_t port, LCI_comp_type_t comp_type)
Set the completion mechanism of the property list.
LCI_DEFAULT_TABLE_LENGTH
int LCI_DEFAULT_TABLE_LENGTH
Initial number of entries in a default matching table.
LCI_sendmn
LCI_API LCI_error_t LCI_sendmn(LCI_endpoint_t ep, LCI_mbuffer_t buffer, int rank, LCI_tag_t tag)
Send a medium message with a LCI-provided buffer (allocated by LCI_mbuffer_alloc, up to LCI_MEDIUM_SI...
LCI_PORT_COMMAND
@ LCI_PORT_COMMAND
Definition: lci.h:210
LCI_UR_DEVICE
LCI_device_t LCI_UR_DEVICE
Default device initialized by LCI_initialize. Just for convenience.
LCI_OK
@ LCI_OK
Definition: lci.h:185
LCI_recvm
LCI_API LCI_error_t LCI_recvm(LCI_endpoint_t ep, LCI_mbuffer_t buffer, int rank, LCI_tag_t tag, LCI_comp_t completion, void *user_context)
Receive a medium message (up to LCI_MEDIUM_SIZE bytes) into a user-provided buffer.
LCI_ERR_FATAL
@ LCI_ERR_FATAL
Definition: lci.h:192
LCI_PACKET_SIZE
int LCI_PACKET_SIZE
Size of each packet.
LCI_data_t::iovec
LCI_iovec_t iovec
Definition: lci.h:343
LCI_putva
LCI_API LCI_error_t LCI_putva(LCI_endpoint_t ep, LCI_iovec_t iovec, LCI_comp_t completion, int rank, LCI_tag_t tag, uintptr_t remote_completion, void *user_context)
Send an iovec with user-provided buffers. The piggyback buffer can be immediately reused....
LCI_lbuffer_memalign
LCI_API LCI_error_t LCI_lbuffer_memalign(LCI_device_t device, size_t size, size_t alignment, LCI_lbuffer_t *lbuffer)
Allocate a memory buffer of arbitrary size with a specific alignment and register it.
LCI_UR_CQ
LCI_comp_t LCI_UR_CQ
Default completion queue initialized by LCI_initialize. Just for convenience.
LCI_lbuffer_t::length
size_t length
Definition: lci.h:274
LCI_SERVER_MAX_CQES
int LCI_SERVER_MAX_CQES
Server's completion queue length.
LCI_COMPLETION_NONE
@ LCI_COMPLETION_NONE
Definition: lci.h:219
LCI_lbuffer_t
LCI long communication buffer.
Definition: lci.h:271
LCI_MAX_QUEUE_LENGTH
int LCI_MAX_QUEUE_LENGTH
Maximum number of entries in a completion queue.
LCI_plist_set_match_type
LCI_API LCI_error_t LCI_plist_set_match_type(LCI_plist_t plist, LCI_match_t match_type)
Set the tag matching rule of the property list.
LCI_queue_free
LCI_API LCI_error_t LCI_queue_free(LCI_comp_t *cq)
Free a completion queue.
LCI_MEDIUM_SIZE
int LCI_MEDIUM_SIZE
The maximum size (in byte) of a buffer that can be used in medium messages.
LCI_ERR_FEATURE_NA
@ LCI_ERR_FEATURE_NA
Definition: lci.h:191
LCI_queue_wait
LCI_API LCI_error_t LCI_queue_wait(LCI_comp_t cq, LCI_request_t *request)
Pop one entry from the completion queue. This call will block the calling thread until there is an en...
LCI_ERR_RETRY_NOMEM
@ LCI_ERR_RETRY_NOMEM
Definition: lci.h:189
LCI_queue_pop
LCI_API LCI_error_t LCI_queue_pop(LCI_comp_t cq, LCI_request_t *request)
Pop one entry from the completion queue. This call is nonblocking.
LCI_mbuffer_t::address
void * address
Definition: lci.h:285
LCI_short_t
LCI short data.
Definition: lci.h:300
LCI_data_t::mbuffer
LCI_mbuffer_t mbuffer
Definition: lci.h:341
LCI_device_init
LCI_API LCI_error_t LCI_device_init(LCI_device_t *device_ptr)
Initialize a device.
LCI_IMMEDIATE
@ LCI_IMMEDIATE
Definition: lci.h:230
LCI_mbuffer_alloc
LCI_API LCI_error_t LCI_mbuffer_alloc(LCI_device_t device, LCI_mbuffer_t *mbuffer)
Get a pre-registered memory buffer of size LCI_MEDIUM_SIZE.
LCI_mbuffer_t
LCI medium communication buffer.
Definition: lci.h:284
LCI_putma
LCI_API LCI_error_t LCI_putma(LCI_endpoint_t ep, LCI_mbuffer_t buffer, int rank, LCI_tag_t tag, uintptr_t remote_completion)
Send a medium message with a user-provided buffer (up to LCI_MEDIUM_SIZE bytes). The send buffer can ...
LCI_recvs
LCI_API LCI_error_t LCI_recvs(LCI_endpoint_t ep, int rank, LCI_tag_t tag, LCI_comp_t completion, void *user_context)
Receive a short message (up to LCI_SHORT_SIZE bytes). The received message will be delivered through ...
LCI_initialized
LCI_API LCI_error_t LCI_initialized(int *flag)
Check whether the LCI runtime has been initialized.
LCI_sync_test
LCI_API LCI_error_t LCI_sync_test(LCI_comp_t completion, LCI_request_t request[])
Test whether a synchronizer has been triggered. A synchronizer will be triggered if all the associate...
LCI_lbuffer_alloc
LCI_API LCI_error_t LCI_lbuffer_alloc(LCI_device_t device, size_t size, LCI_lbuffer_t *lbuffer)
Allocate a memory buffer of arbitrary size and register it.
LCI_memory_deregister
LCI_API LCI_error_t LCI_memory_deregister(LCI_segment_t *segment)
Deregister a memory region.
LCI_SINGLE_THREAD_PROGRESS
int LCI_SINGLE_THREAD_PROGRESS
LCI_progress on the same device will not be called by multiple threads simultaneously.
LCI_endpoint_free
LCI_API LCI_error_t LCI_endpoint_free(LCI_endpoint_t *ep_ptr)
Free an endpoint.
LCI_mbuffer_t::length
size_t length
Definition: lci.h:286
LCI_ERR_RETRY_LOCK
@ LCI_ERR_RETRY_LOCK
Definition: lci.h:187
LCI_queue_wait_multiple
LCI_API LCI_error_t LCI_queue_wait_multiple(LCI_comp_t cq, size_t request_count, LCI_request_t *requests)
Pop multiple entry from the completion queue.This call will block the calling thread until request_co...
LCI_SEND_SLOW_DOWN_USEC
int LCI_SEND_SLOW_DOWN_USEC
Manually slow down LCI backend send function.
LCI_memory_register
LCI_API LCI_error_t LCI_memory_register(LCI_device_t device, void *address, size_t length, LCI_segment_t *segment)
Register a memory region to a device.
LCI_TOUCH_LBUFFER
int LCI_TOUCH_LBUFFER
Whether touch every page of lbuffers allocated by LCI_lbuffer_alloc.
LCI_finalize
LCI_API LCI_error_t LCI_finalize()
Finalize the LCI runtime. No LCI calls are allowed to be called after LCI_finalize except LCI_initial...
LCI_lbuffer_t::segment
LCI_segment_t segment
Definition: lci.h:272
LCI_segment_t
struct LCII_mr_t * LCI_segment_t
LCI memory segment.
Definition: lci.h:261
LCI_IBV_USE_PREFETCH
int LCI_IBV_USE_PREFETCH
Whether or what to use IBV prefetch.
LCI_endpoint_t
struct LCI_endpoint_s * LCI_endpoint_t
The endpoint type.
Definition: lci.h:373
LCI_MATCH_TAG
@ LCI_MATCH_TAG
Definition: lci.h:202
LCI_plist_set_default_comp
LCI_API LCI_error_t LCI_plist_set_default_comp(LCI_plist_t plist, LCI_comp_t comp)
Set the default completion mechanism of the property list. The default completion mechanism will be t...
LCI_comp_t
void * LCI_comp_t
LCI generic completion type.
Definition: lci.h:251
LCI_endpoint_init
LCI_API LCI_error_t LCI_endpoint_init(LCI_endpoint_t *ep_ptr, LCI_device_t device, LCI_plist_t plist)
Create an endpoint according to a property list.
LCI_data_type_t
LCI_data_type_t
LCI data type.
Definition: lci.h:229
LCI_NUM_PROCESSES
int LCI_NUM_PROCESSES
The number of processes in this job.
LCI_request_t::flag
LCI_error_t flag
Definition: lci.h:353
LCI_IOVEC
@ LCI_IOVEC
Definition: lci.h:235
LCI_port_t
LCI_port_t
LCI Port type.
Definition: lci.h:209
LCI_MEDIUM
@ LCI_MEDIUM
Definition: lci.h:232
LCI_RECV_SLOW_DOWN_USEC
int LCI_RECV_SLOW_DOWN_USEC
Manually slow down LCI backend recv function.
LCI_iovec_t::piggy_back
LCI_mbuffer_t piggy_back
Definition: lci.h:329
LCI_API
#define LCI_API
Definition: lci.h:172
LCI_comp_type_t
LCI_comp_type_t
LCI completion enumeration type.
Definition: lci.h:218
LCI_iovec_t::lbuffers
LCI_lbuffer_t * lbuffers
Definition: lci.h:330
LCI_puts
LCI_API LCI_error_t LCI_puts(LCI_endpoint_t ep, LCI_short_t src, int rank, LCI_tag_t tag, uintptr_t remote_completion)
Send a short message (up to LCI_SHORT_SIZE bytes). The send buffer can be immediately reused....
LCI_data_t::lbuffer
LCI_lbuffer_t lbuffer
Definition: lci.h:342
LCI_MAX_TABLE_LENGTH
int LCI_MAX_TABLE_LENGTH
Maximum number of entries in a matching table.
LCI_sync_create
LCI_API LCI_error_t LCI_sync_create(LCI_device_t device, int threshold, LCI_comp_t *completion)
Create a synchronizer.
LCI_queue_create
LCI_API LCI_error_t LCI_queue_create(LCI_device_t device, LCI_comp_t *cq)
Create a completion queue.
LCI_sendm
LCI_API LCI_error_t LCI_sendm(LCI_endpoint_t ep, LCI_mbuffer_t buffer, int rank, LCI_tag_t tag)
Send a medium message with a user-provided buffer (up to LCI_MEDIUM_SIZE bytes). The send buffer can ...
LCI_match_t
LCI_match_t
LCI Match type. Define the matching rule between sends and receives.
Definition: lci.h:199
LCI_SHORT_SIZE
#define LCI_SHORT_SIZE
The size of LCI short data.
Definition: lci.h:294
LCI_progress
LCI_API LCI_error_t LCI_progress(LCI_device_t device)
Make progress on the background works of a device. This function is not thread-safe.
LCI_MAX_TAG
int LCI_MAX_TAG
The largest allowed tag value.
LCI_RANK
int LCI_RANK
The rank of the current process w.r.t the job.
LCI_get_iovec_piggy_back_size
LCI_API size_t LCI_get_iovec_piggy_back_size(int count)
Return the maximum size of the piggyback buffer in an iovec with given number of long buffers.
LCI_IBV_ENABLE_EVENT_POLLING_THREAD
bool LCI_IBV_ENABLE_EVENT_POLLING_THREAD
whether to enable ibv's event polling thread.
LCI_COMPLETION_SYNC
@ LCI_COMPLETION_SYNC
Definition: lci.h:222
LCI_sync_signal
LCI_API LCI_error_t LCI_sync_signal(LCI_comp_t completion, LCI_request_t request)
Signal a synchronizer once. A synchronizer needs to be signaled threshold time to be considered trigg...
LCI_ERR_RETRY
@ LCI_ERR_RETRY
Definition: lci.h:186
LCI_DEFAULT_QUEUE_LENGTH
int LCI_DEFAULT_QUEUE_LENGTH
Initial number of entries in a default completion queue.
LCI_COMPLETION_HANDLER
@ LCI_COMPLETION_HANDLER
Definition: lci.h:221
LCI_MATCH_RANKTAG
@ LCI_MATCH_RANKTAG
Definition: lci.h:200
LCI_device_t
struct LCI_device_s * LCI_device_t
The device type.
Definition: lci.h:366
LCI_queue_len
LCI_API LCI_error_t LCI_queue_len(LCI_comp_t cq, size_t *len)
Query the number of entries in a completion queue.
LCI_mbuffer_free
LCI_API LCI_error_t LCI_mbuffer_free(LCI_mbuffer_t mbuffer)
Return a pre-registered memory buffer to the LCI runtime.
LCI_request_t::data
LCI_data_t data
Definition: lci.h:357
LCI_data_t::immediate
LCI_short_t immediate
Definition: lci.h:340
LCI_barrier
LCI_API LCI_error_t LCI_barrier()
Invoke a barrier across all LCI processes in the same job. The call will block the calling thread unt...
LCI_COMPLETION_QUEUE
@ LCI_COMPLETION_QUEUE
Definition: lci.h:220
LCI_lbuffer_free
LCI_API LCI_error_t LCI_lbuffer_free(LCI_lbuffer_t lbuffer)
Deregister and free a memory buffer.
LCI_PACKET_RETURN_THRESHOLD
int LCI_PACKET_RETURN_THRESHOLD
The packet returning threshold.
LCI_plist_create
LCI_API LCI_error_t LCI_plist_create(LCI_plist_t *plist_ptr)
Create a property list.
LCI_sync_free
LCI_API LCI_error_t LCI_sync_free(LCI_comp_t *completion)
Free a synchronizer.
LCI_UR_ENDPOINT
LCI_endpoint_t LCI_UR_ENDPOINT
Default endpoint initialized by LCI_initialize. Just for convenience.
LCI_iovec_t
LCI iovec, which is comprised of a piggyback buffer and multiple long buffers.
Definition: lci.h:328
LCI_MAX_ENDPOINTS
int LCI_MAX_ENDPOINTS
The maximum number of endpoints that can be created.
LCI_error_t
LCI_error_t
LCI Error type.
Definition: lci.h:184
LCI_IBV_USE_ODP
int LCI_IBV_USE_ODP
Whether or what to use IBV on-demand paging.
LCI_putla
LCI_API LCI_error_t LCI_putla(LCI_endpoint_t ep, LCI_lbuffer_t buffer, LCI_comp_t completion, int rank, LCI_tag_t tag, uintptr_t remote_completion, void *user_context)
Send a long message with a user-provided buffer. The send buffer cannot be reused until the associate...
LCI_plist_decode
LCI_API LCI_error_t LCI_plist_decode(LCI_plist_t plist, char *string)
Decode a property list into a string.
LCI_recvl
LCI_API LCI_error_t LCI_recvl(LCI_endpoint_t ep, LCI_lbuffer_t buffer, int rank, LCI_tag_t tag, LCI_comp_t completion, void *user_context)
Receive a long message into a user-provided buffer.
LCI_USE_DREG
int LCI_USE_DREG
Whether or what to use LCI-provided registration cache.
LCI_data_t
A generic type for communication buffers.
Definition: lci.h:339
LCI_request_t::user_context
void * user_context
Definition: lci.h:358
LCI_plist_t
struct LCI_plist_s * LCI_plist_t
The property list type.
Definition: lci.h:380
LCI_handler_create
LCI_API LCI_error_t LCI_handler_create(LCI_device_t device, LCI_handler_t handler, LCI_comp_t *completion)
Create an active message handler.
LCI_initialize
LCI_API LCI_error_t LCI_initialize()
Initialize the LCI runtime. No LCI calls are allowed to be called before LCI_initialize except LCI_in...
LCI_plist_get
LCI_API LCI_error_t LCI_plist_get(LCI_endpoint_t ep, LCI_plist_t *plist_ptr)
Query the property list of an endpoint.
LCI_sends
LCI_API LCI_error_t LCI_sends(LCI_endpoint_t ep, LCI_short_t src, int rank, LCI_tag_t tag)
Send a short message (up to LCI_SHORT_SIZE bytes). The send buffer can be immediately reused.
LCI_SERVER_MAX_RECVS
int LCI_SERVER_MAX_RECVS
Server's recv queue length.
LCI_LONG
@ LCI_LONG
Definition: lci.h:234
LCI_iovec_t::count
int count
Definition: lci.h:331
LCI_IOVEC_SIZE
int LCI_IOVEC_SIZE
The maximum number of long buffers in an IO vector.
LCI_MAX_SYNC_LENGTH
int LCI_MAX_SYNC_LENGTH
Maximum number of request a synchronizer may be waiting for.
LCI_sendl
LCI_API LCI_error_t LCI_sendl(LCI_endpoint_t ep, LCI_lbuffer_t buffer, int rank, LCI_tag_t tag, LCI_comp_t completion, void *user_context)
Send a long message with a user-provided buffer. The send buffer cannot be reused until the associate...
LCI_lbuffer_t::address
void * address
Definition: lci.h:273
LCI_request_t::tag
LCI_tag_t tag
Definition: lci.h:355
LCI_putmna
LCI_API LCI_error_t LCI_putmna(LCI_endpoint_t ep, LCI_mbuffer_t buffer, int rank, LCI_tag_t tag, uintptr_t remote_completion)
Send a medium message with a LCI-provided buffer (allocated by LCI_mbuffer_alloc, up to LCI_MEDIUM_SI...
LCI_request_t::type
LCI_data_type_t type
Definition: lci.h:356
LCI_recvmn
LCI_API LCI_error_t LCI_recvmn(LCI_endpoint_t ep, int rank, LCI_tag_t tag, LCI_comp_t completion, void *user_context)
Receive a medium message (up to LCI_MEDIUM_SIZE bytes) into a LCI-provided buffer....
LCI_plist_free
LCI_API LCI_error_t LCI_plist_free(LCI_plist_t *plist_ptr)
Free a property list.