libfabric: update to Github upstream 7095f3dc
Этот коммит содержится в:
родитель
afec1454f5
Коммит
1a1be2efa0
@ -309,138 +309,139 @@ nodist_rdmainclude_HEADERS = \
|
||||
endif HAVE_DIRECT
|
||||
|
||||
real_man_pages = \
|
||||
man/fabric.7 \
|
||||
man/fi_av.3 \
|
||||
man/fi_cm.3 \
|
||||
man/fi_cntr.3 \
|
||||
man/fi_control.3 \
|
||||
man/fi_cq.3 \
|
||||
man/fi_direct.7 \
|
||||
man/fi_domain.3 \
|
||||
man/fi_endpoint.3 \
|
||||
man/fi_errno.3 \
|
||||
man/fi_eq.3 \
|
||||
man/fi_fabric.3 \
|
||||
man/fi_getinfo.3 \
|
||||
man/fi_mr.3 \
|
||||
man/fi_msg.3 \
|
||||
man/fi_poll.3 \
|
||||
man/fi_rma.3 \
|
||||
man/fi_tagged.3 \
|
||||
man/fi_trigger.3 \
|
||||
man/fi_version.3
|
||||
man/man3/fi_av.3 \
|
||||
man/man3/fi_cm.3 \
|
||||
man/man3/fi_cntr.3 \
|
||||
man/man3/fi_control.3 \
|
||||
man/man3/fi_cq.3 \
|
||||
man/man3/fi_domain.3 \
|
||||
man/man3/fi_endpoint.3 \
|
||||
man/man3/fi_errno.3 \
|
||||
man/man3/fi_eq.3 \
|
||||
man/man3/fi_fabric.3 \
|
||||
man/man3/fi_getinfo.3 \
|
||||
man/man3/fi_mr.3 \
|
||||
man/man3/fi_msg.3 \
|
||||
man/man3/fi_poll.3 \
|
||||
man/man3/fi_rma.3 \
|
||||
man/man3/fi_tagged.3 \
|
||||
man/man3/fi_trigger.3 \
|
||||
man/man3/fi_version.3 \
|
||||
man/man7/fabric.7 \
|
||||
man/man7/fi_direct.7
|
||||
|
||||
dummy_man_pages = \
|
||||
man/fi_accept.3 \
|
||||
man/fi_alias.3 \
|
||||
man/fi_atomic_valid.3 \
|
||||
man/fi_atomicmsg.3 \
|
||||
man/fi_atomicv.3 \
|
||||
man/fi_av_bind.3 \
|
||||
man/fi_av_insert.3 \
|
||||
man/fi_av_insertsvc.3 \
|
||||
man/fi_av_lookup.3 \
|
||||
man/fi_av_open.3 \
|
||||
man/fi_av_remove.3 \
|
||||
man/fi_av_straddr.3 \
|
||||
man/fi_cancel.3 \
|
||||
man/fi_close.3 \
|
||||
man/fi_cntr_add.3 \
|
||||
man/fi_cntr_open.3 \
|
||||
man/fi_cntr_read.3 \
|
||||
man/fi_cntr_set.3 \
|
||||
man/fi_cntr_wait.3 \
|
||||
man/fi_compare_atomic.3 \
|
||||
man/fi_compare_atomic_valid.3 \
|
||||
man/fi_compare_atomicmsg.3 \
|
||||
man/fi_compare_atomicv.3 \
|
||||
man/fi_connect.3 \
|
||||
man/fi_cq_open.3 \
|
||||
man/fi_cq_read.3 \
|
||||
man/fi_cq_readerr.3 \
|
||||
man/fi_cq_readfrom.3 \
|
||||
man/fi_cq_sread.3 \
|
||||
man/fi_cq_sreadfrom.3 \
|
||||
man/fi_cq_strerror.3 \
|
||||
man/fi_cq_write.3 \
|
||||
man/fi_domain_bind.3 \
|
||||
man/fi_domain_query.3 \
|
||||
man/fi_dupinfo.3 \
|
||||
man/fi_enable.3 \
|
||||
man/fi_ep_bind.3 \
|
||||
man/fi_eq_open.3 \
|
||||
man/fi_eq_read.3 \
|
||||
man/fi_eq_readerr.3 \
|
||||
man/fi_eq_sread.3 \
|
||||
man/fi_eq_strerror.3 \
|
||||
man/fi_eq_write.3 \
|
||||
man/fi_fetch_atomic.3 \
|
||||
man/fi_fetch_atomic_valid.3 \
|
||||
man/fi_fetch_atomicmsg.3 \
|
||||
man/fi_fetch_atomicv.3 \
|
||||
man/fi_freeinfo.3 \
|
||||
man/fi_getname.3 \
|
||||
man/fi_getopt.3 \
|
||||
man/fi_getpeer.3 \
|
||||
man/fi_inject.3 \
|
||||
man/fi_injectdata.3 \
|
||||
man/fi_inject_atomic.3 \
|
||||
man/fi_inject_write.3 \
|
||||
man/fi_inject_writedata.3 \
|
||||
man/fi_join.3 \
|
||||
man/fi_leave.3 \
|
||||
man/fi_listen.3 \
|
||||
man/fi_mr_bind.3 \
|
||||
man/fi_mr_desc.3 \
|
||||
man/fi_mr_key.3 \
|
||||
man/fi_mr_reg.3 \
|
||||
man/fi_mr_regattr.3 \
|
||||
man/fi_mr_regv.3 \
|
||||
man/fi_open.3 \
|
||||
man/fi_passive_ep.3 \
|
||||
man/fi_poll_add.3 \
|
||||
man/fi_poll_del.3 \
|
||||
man/fi_poll_open.3 \
|
||||
man/fi_read.3 \
|
||||
man/fi_readmsg.3 \
|
||||
man/fi_readv.3 \
|
||||
man/fi_recv.3 \
|
||||
man/fi_recvmsg.3 \
|
||||
man/fi_recvv.3 \
|
||||
man/fi_reject.3 \
|
||||
man/fi_rx_addr.3 \
|
||||
man/fi_rx_size_left.3 \
|
||||
man/fi_send.3 \
|
||||
man/fi_senddata.3 \
|
||||
man/fi_sendmsg.3 \
|
||||
man/fi_sendv.3 \
|
||||
man/fi_setopt.3 \
|
||||
man/fi_shutdown.3 \
|
||||
man/fi_strerror.3 \
|
||||
man/fi_tinject.3 \
|
||||
man/fi_tinjectdata.3 \
|
||||
man/fi_tostr.3 \
|
||||
man/fi_trecv.3 \
|
||||
man/fi_trecvmsg.3 \
|
||||
man/fi_trecvv.3 \
|
||||
man/fi_tsearch.3 \
|
||||
man/fi_tsend.3 \
|
||||
man/fi_tsenddata.3 \
|
||||
man/fi_tsendmsg.3 \
|
||||
man/fi_tsendv.3 \
|
||||
man/fi_tx_size_left.3 \
|
||||
man/fi_wait.3 \
|
||||
man/fi_wait_open.3 \
|
||||
man/fi_write.3 \
|
||||
man/fi_writedata.3 \
|
||||
man/fi_writemsg.3 \
|
||||
man/fi_writev.3
|
||||
man/man3/fi_accept.3 \
|
||||
man/man3/fi_alias.3 \
|
||||
man/man3/fi_atomic_valid.3 \
|
||||
man/man3/fi_atomicmsg.3 \
|
||||
man/man3/fi_atomicv.3 \
|
||||
man/man3/fi_av_bind.3 \
|
||||
man/man3/fi_av_insert.3 \
|
||||
man/man3/fi_av_insertsvc.3 \
|
||||
man/man3/fi_av_lookup.3 \
|
||||
man/man3/fi_av_open.3 \
|
||||
man/man3/fi_av_remove.3 \
|
||||
man/man3/fi_av_straddr.3 \
|
||||
man/man3/fi_cancel.3 \
|
||||
man/man3/fi_close.3 \
|
||||
man/man3/fi_cntr_add.3 \
|
||||
man/man3/fi_cntr_open.3 \
|
||||
man/man3/fi_cntr_read.3 \
|
||||
man/man3/fi_cntr_set.3 \
|
||||
man/man3/fi_cntr_wait.3 \
|
||||
man/man3/fi_compare_atomic.3 \
|
||||
man/man3/fi_compare_atomic_valid.3 \
|
||||
man/man3/fi_compare_atomicmsg.3 \
|
||||
man/man3/fi_compare_atomicv.3 \
|
||||
man/man3/fi_connect.3 \
|
||||
man/man3/fi_cq_open.3 \
|
||||
man/man3/fi_cq_read.3 \
|
||||
man/man3/fi_cq_readerr.3 \
|
||||
man/man3/fi_cq_readfrom.3 \
|
||||
man/man3/fi_cq_sread.3 \
|
||||
man/man3/fi_cq_sreadfrom.3 \
|
||||
man/man3/fi_cq_strerror.3 \
|
||||
man/man3/fi_cq_write.3 \
|
||||
man/man3/fi_domain_bind.3 \
|
||||
man/man3/fi_domain_query.3 \
|
||||
man/man3/fi_dupinfo.3 \
|
||||
man/man3/fi_enable.3 \
|
||||
man/man3/fi_ep_bind.3 \
|
||||
man/man3/fi_eq_open.3 \
|
||||
man/man3/fi_eq_read.3 \
|
||||
man/man3/fi_eq_readerr.3 \
|
||||
man/man3/fi_eq_sread.3 \
|
||||
man/man3/fi_eq_strerror.3 \
|
||||
man/man3/fi_eq_write.3 \
|
||||
man/man3/fi_fetch_atomic.3 \
|
||||
man/man3/fi_fetch_atomic_valid.3 \
|
||||
man/man3/fi_fetch_atomicmsg.3 \
|
||||
man/man3/fi_fetch_atomicv.3 \
|
||||
man/man3/fi_freeinfo.3 \
|
||||
man/man3/fi_getname.3 \
|
||||
man/man3/fi_getopt.3 \
|
||||
man/man3/fi_getpeer.3 \
|
||||
man/man3/fi_inject.3 \
|
||||
man/man3/fi_injectdata.3 \
|
||||
man/man3/fi_inject_atomic.3 \
|
||||
man/man3/fi_inject_write.3 \
|
||||
man/man3/fi_inject_writedata.3 \
|
||||
man/man3/fi_join.3 \
|
||||
man/man3/fi_leave.3 \
|
||||
man/man3/fi_listen.3 \
|
||||
man/man3/fi_mr_bind.3 \
|
||||
man/man3/fi_mr_desc.3 \
|
||||
man/man3/fi_mr_key.3 \
|
||||
man/man3/fi_mr_reg.3 \
|
||||
man/man3/fi_mr_regattr.3 \
|
||||
man/man3/fi_mr_regv.3 \
|
||||
man/man3/fi_open.3 \
|
||||
man/man3/fi_passive_ep.3 \
|
||||
man/man3/fi_poll_add.3 \
|
||||
man/man3/fi_poll_del.3 \
|
||||
man/man3/fi_poll_open.3 \
|
||||
man/man3/fi_read.3 \
|
||||
man/man3/fi_readmsg.3 \
|
||||
man/man3/fi_readv.3 \
|
||||
man/man3/fi_recv.3 \
|
||||
man/man3/fi_recvmsg.3 \
|
||||
man/man3/fi_recvv.3 \
|
||||
man/man3/fi_reject.3 \
|
||||
man/man3/fi_rx_addr.3 \
|
||||
man/man3/fi_rx_size_left.3 \
|
||||
man/man3/fi_send.3 \
|
||||
man/man3/fi_senddata.3 \
|
||||
man/man3/fi_sendmsg.3 \
|
||||
man/man3/fi_sendv.3 \
|
||||
man/man3/fi_setopt.3 \
|
||||
man/man3/fi_shutdown.3 \
|
||||
man/man3/fi_strerror.3 \
|
||||
man/man3/fi_tinject.3 \
|
||||
man/man3/fi_tinjectdata.3 \
|
||||
man/man3/fi_tostr.3 \
|
||||
man/man3/fi_trecv.3 \
|
||||
man/man3/fi_trecvmsg.3 \
|
||||
man/man3/fi_trecvv.3 \
|
||||
man/man3/fi_tsearch.3 \
|
||||
man/man3/fi_tsend.3 \
|
||||
man/man3/fi_tsenddata.3 \
|
||||
man/man3/fi_tsendmsg.3 \
|
||||
man/man3/fi_tsendv.3 \
|
||||
man/man3/fi_tx_size_left.3 \
|
||||
man/man3/fi_wait.3 \
|
||||
man/man3/fi_wait_open.3 \
|
||||
man/man3/fi_write.3 \
|
||||
man/man3/fi_writedata.3 \
|
||||
man/man3/fi_writemsg.3 \
|
||||
man/man3/fi_writev.3
|
||||
|
||||
man_MANS = $(real_man_pages) $(dummy_man_pages)
|
||||
|
||||
nroff:
|
||||
@for file in $(real_man_pages); do \
|
||||
config/md2nroff.pl --source=$$file.md; \
|
||||
source=`echo $$file | sed -e 's@/man[0-9]@@'`; \
|
||||
config/md2nroff.pl --source=$$source.md; \
|
||||
done
|
||||
|
||||
EXTRA_DIST = libfabric.map libfabric.spec.in config/distscript.pl $(man_MANS)
|
||||
|
@ -1,7 +1,7 @@
|
||||
This README is for userspace RDMA fabric library.
|
||||
|
||||
Version Libfabric v1.0.0rc3
|
||||
Released on 2015-02-20
|
||||
Released on 2015-03-10
|
||||
|
||||
Building
|
||||
========
|
||||
|
@ -197,8 +197,6 @@ int fi_read_file(const char *dir, const char *file, char *buf, size_t size);
|
||||
int fi_poll_fd(int fd, int timeout);
|
||||
int fi_wait_cond(pthread_cond_t *cond, pthread_mutex_t *mut, int timeout);
|
||||
|
||||
struct fi_info *fi_allocinfo_internal(void);
|
||||
|
||||
int fi_sockaddr_len(struct sockaddr *addr);
|
||||
size_t fi_datatype_size(enum fi_datatype datatype);
|
||||
uint64_t fi_tag_bits(uint64_t mem_tag_format);
|
||||
@ -209,6 +207,8 @@ int fi_recv_allowed(uint64_t caps);
|
||||
int fi_rma_initiate_allowed(uint64_t caps);
|
||||
int fi_rma_target_allowed(uint64_t caps);
|
||||
|
||||
uint64_t fi_gettime_ms();
|
||||
|
||||
#define RDMA_CONF_DIR SYSCONFDIR "/" RDMADIR
|
||||
#define FI_CONF_DIR RDMA_CONF_DIR "/fabric"
|
||||
|
||||
|
@ -216,14 +216,14 @@ static struct fi_ops_mr X = {
|
||||
.regattr = fi_no_mr_regattr,
|
||||
};
|
||||
*/
|
||||
int fi_no_mr_reg(struct fid_domain *domain, const void *buf, size_t len,
|
||||
int fi_no_mr_reg(struct fid *fid, const void *buf, size_t len,
|
||||
uint64_t access, uint64_t offset, uint64_t requested_key,
|
||||
uint64_t flags, struct fid_mr **mr, void *context);
|
||||
int fi_no_mr_regv(struct fid_domain *domain, const struct iovec *iov,
|
||||
int fi_no_mr_regv(struct fid *fid, const struct iovec *iov,
|
||||
size_t count, uint64_t access,
|
||||
uint64_t offset, uint64_t requested_key,
|
||||
uint64_t flags, struct fid_mr **mr, void *context);
|
||||
int fi_no_mr_regattr(struct fid_domain *domain, const struct fi_mr_attr *attr,
|
||||
int fi_no_mr_regattr(struct fid *fid, const struct fi_mr_attr *attr,
|
||||
uint64_t flags, struct fid_mr **mr);
|
||||
|
||||
/*
|
||||
|
@ -35,7 +35,6 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <assert.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -48,6 +47,9 @@ extern "C" {
|
||||
((type *) ((char *)ptr - offsetof(type, field)))
|
||||
#endif
|
||||
|
||||
#define FI_DEFINE_HANDLE(name) struct name##_s { int dummy; }; \
|
||||
typedef struct name##_s *name
|
||||
|
||||
enum {
|
||||
FI_MAJOR_VERSION = 1,
|
||||
FI_MINOR_VERSION = 0,
|
||||
@ -99,7 +101,6 @@ typedef struct fid *fid_t;
|
||||
#define FI_ATOMICS FI_ATOMIC
|
||||
#define FI_DYNAMIC_MR (1ULL << 7)
|
||||
#define FI_NAMED_RX_CTX (1ULL << 8)
|
||||
#define FI_BUFFERED_RECV (1ULL << 9)
|
||||
#define FI_DIRECTED_RECV (1ULL << 10)
|
||||
|
||||
/*
|
||||
@ -158,7 +159,13 @@ enum {
|
||||
#define FI_ADDR_NOTAVAIL UINT64_MAX
|
||||
#define FI_SHARED_CONTEXT UINT64_MAX
|
||||
typedef uint64_t fi_addr_t;
|
||||
typedef void * fi_connreq_t;
|
||||
FI_DEFINE_HANDLE(fi_connreq_t);
|
||||
|
||||
enum fi_av_type {
|
||||
FI_AV_UNSPEC,
|
||||
FI_AV_MAP,
|
||||
FI_AV_TABLE
|
||||
};
|
||||
|
||||
enum fi_progress {
|
||||
FI_PROGRESS_UNSPEC,
|
||||
@ -248,11 +255,10 @@ struct fi_rx_attr {
|
||||
};
|
||||
|
||||
struct fi_ep_attr {
|
||||
enum fi_ep_type type;
|
||||
uint32_t protocol;
|
||||
uint32_t protocol_version;
|
||||
size_t max_msg_size;
|
||||
size_t inject_size;
|
||||
size_t total_buffered_recv;
|
||||
size_t msg_prefix_size;
|
||||
size_t max_order_raw_size;
|
||||
size_t max_order_war_size;
|
||||
@ -271,6 +277,7 @@ struct fi_domain_attr {
|
||||
enum fi_progress control_progress;
|
||||
enum fi_progress data_progress;
|
||||
enum fi_resource_mgmt resource_mgmt;
|
||||
enum fi_av_type av_type;
|
||||
size_t mr_key_size;
|
||||
size_t cq_data_size;
|
||||
size_t cq_cnt;
|
||||
@ -292,7 +299,6 @@ struct fi_info {
|
||||
struct fi_info *next;
|
||||
uint64_t caps;
|
||||
uint64_t mode;
|
||||
enum fi_ep_type ep_type;
|
||||
uint32_t addr_format;
|
||||
size_t src_addrlen;
|
||||
size_t dest_addrlen;
|
||||
@ -353,6 +359,11 @@ int fi_getinfo(uint32_t version, const char *node, const char *service,
|
||||
void fi_freeinfo(struct fi_info *info);
|
||||
struct fi_info *fi_dupinfo(const struct fi_info *info);
|
||||
|
||||
static inline struct fi_info *fi_allocinfo(void)
|
||||
{
|
||||
return fi_dupinfo(NULL);
|
||||
}
|
||||
|
||||
struct fi_ops_fabric {
|
||||
size_t size;
|
||||
int (*domain)(struct fid_fabric *fabric, struct fi_info *info,
|
||||
@ -441,6 +452,8 @@ enum fi_type {
|
||||
FI_TYPE_ATOMIC_TYPE,
|
||||
FI_TYPE_ATOMIC_OP,
|
||||
FI_TYPE_VERSION,
|
||||
FI_TYPE_EQ_EVENT,
|
||||
FI_TYPE_CQ_EVENT_FLAGS,
|
||||
};
|
||||
|
||||
char *fi_tostr(const void *data, enum fi_type datatype);
|
||||
|
@ -33,7 +33,6 @@
|
||||
#ifndef _FI_ATOMIC_H_
|
||||
#define _FI_ATOMIC_H_
|
||||
|
||||
#include <assert.h>
|
||||
#include <rdma/fabric.h>
|
||||
#include <rdma/fi_endpoint.h>
|
||||
#include <rdma/fi_rma.h>
|
||||
|
@ -47,11 +47,6 @@ extern "C" {
|
||||
* Maps and stores transport/network addresses.
|
||||
*/
|
||||
|
||||
enum fi_av_type {
|
||||
FI_AV_MAP,
|
||||
FI_AV_TABLE
|
||||
};
|
||||
|
||||
struct fi_av_attr {
|
||||
enum fi_av_type type;
|
||||
int rx_ctx_bits;
|
||||
@ -140,14 +135,14 @@ struct fi_ops_domain {
|
||||
|
||||
struct fi_ops_mr {
|
||||
size_t size;
|
||||
int (*reg)(struct fid_domain *domain, const void *buf, size_t len,
|
||||
int (*reg)(struct fid *fid, const void *buf, size_t len,
|
||||
uint64_t access, uint64_t offset, uint64_t requested_key,
|
||||
uint64_t flags, struct fid_mr **mr, void *context);
|
||||
int (*regv)(struct fid_domain *domain, const struct iovec *iov,
|
||||
int (*regv)(struct fid *fid, const struct iovec *iov,
|
||||
size_t count, uint64_t access,
|
||||
uint64_t offset, uint64_t requested_key,
|
||||
uint64_t flags, struct fid_mr **mr, void *context);
|
||||
int (*regattr)(struct fid_domain *domain, const struct fi_mr_attr *attr,
|
||||
int (*regattr)(struct fid *fid, const struct fi_mr_attr *attr,
|
||||
uint64_t flags, struct fid_mr **mr);
|
||||
};
|
||||
|
||||
@ -209,7 +204,7 @@ fi_mr_reg(struct fid_domain *domain, const void *buf, size_t len,
|
||||
uint64_t access, uint64_t offset, uint64_t requested_key,
|
||||
uint64_t flags, struct fid_mr **mr, void *context)
|
||||
{
|
||||
return domain->mr->reg(domain, buf, len, access, offset,
|
||||
return domain->mr->reg(&domain->fid, buf, len, access, offset,
|
||||
requested_key, flags, mr, context);
|
||||
}
|
||||
|
||||
@ -276,6 +271,12 @@ fi_av_lookup(struct fid_av *av, fi_addr_t fi_addr, void *addr, size_t *addrlen)
|
||||
return av->ops->lookup(av, fi_addr, addr, addrlen);
|
||||
}
|
||||
|
||||
static inline const char *
|
||||
fi_av_straddr(struct fid_av *av, const void *addr, char *buf, size_t *len)
|
||||
{
|
||||
return av->ops->straddr(av, addr, buf, len);
|
||||
}
|
||||
|
||||
static inline fi_addr_t
|
||||
fi_rx_addr(fi_addr_t fi_addr, int rx_index, int rx_ctx_bits)
|
||||
{
|
||||
|
@ -61,6 +61,7 @@ enum {
|
||||
/* FI_OPT_ENDPOINT option names */
|
||||
enum {
|
||||
FI_OPT_MIN_MULTI_RECV, /* size_t */
|
||||
FI_OPT_CM_DATA_SIZE, /* size_t */
|
||||
};
|
||||
|
||||
struct fi_ops_ep {
|
||||
|
@ -137,6 +137,7 @@ struct fi_eq_err_entry {
|
||||
int prov_errno;
|
||||
/* err_data is available until the next time the CQ is read */
|
||||
void *err_data;
|
||||
size_t err_data_size;
|
||||
};
|
||||
|
||||
struct fi_eq_cm_entry {
|
||||
|
@ -33,7 +33,6 @@
|
||||
#ifndef _FI_RMA_H_
|
||||
#define _FI_RMA_H_
|
||||
|
||||
#include <assert.h>
|
||||
#include <rdma/fabric.h>
|
||||
#include <rdma/fi_endpoint.h>
|
||||
|
||||
|
@ -33,7 +33,6 @@
|
||||
#ifndef _FI_TAGGED_H_
|
||||
#define _FI_TAGGED_H_
|
||||
|
||||
#include <assert.h>
|
||||
#include <rdma/fabric.h>
|
||||
#include <rdma/fi_endpoint.h>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
.TH fi_av 3 "2015\-02\-12" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_av 3 "2015\-03\-09" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_av - Address vector operations
|
||||
@ -47,7 +47,7 @@ fi_addr_t\ fi_rx_addr(fi_addr_t\ fi_addr,\ int\ rx_index,
|
||||
\ \ \ \ \ \ int\ rx_ctx_bits);
|
||||
|
||||
const\ char\ *\ fi_av_straddr(struct\ fid_av\ *av,\ const\ void\ *addr,
|
||||
\ \ \ \ \ \ void\ *buf,\ size_t\ len);
|
||||
\ \ \ \ \ \ void\ *buf,\ size_t\ *len);
|
||||
\f[]
|
||||
.fi
|
||||
.SH ARGUMENTS
|
||||
@ -365,8 +365,8 @@ The specified address must be of the same format as those stored by the
|
||||
AV, though the address itself is not required to have been inserted.
|
||||
On input, the len parameter should specify the size of the buffer
|
||||
referenced by buf.
|
||||
On output, the actual size needed to write the entire string will be
|
||||
returned.
|
||||
On output, addrlen is set to the size of the buffer needed to store the
|
||||
address.
|
||||
This size may be larger than the input len.
|
||||
If the provided buffer is too small, the results will be truncated.
|
||||
fi_av_straddr returns a pointer to buf.
|
@ -1,4 +1,4 @@
|
||||
.TH fi_cm 3 "2015\-01\-01" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_cm 3 "2015\-02\-26" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_cm - Connection management operations
|
||||
@ -102,29 +102,36 @@ fi_accept as opposed to the listening passive endpoint.
|
||||
Outbound data transfers cannot be initiated on a connection-oriented
|
||||
endpoint until an FI_CONNECTED event has been generated.
|
||||
However, receive buffers may be associated with an endpoint anytime.
|
||||
.PP
|
||||
For connection-oriented endpoints, the param buffer will be sent as part
|
||||
of the connection request or response, subject to the constraints of the
|
||||
underlying connection protocol.
|
||||
Applications may use fi_control to determine the size of application
|
||||
data that may be exchanged as part of a connection request or response.
|
||||
The fi_connect, fi_accept, and fi_reject calls will silently truncate
|
||||
any application data which cannot fit into underlying protocol messages.
|
||||
.SS fi_shutdown
|
||||
.PP
|
||||
The fi_shutdown call is used to gracefully disconnect an endpoint from
|
||||
its peer.
|
||||
If shutdown flags are 0, the endpoint is fully disconnected, and no
|
||||
additional data transfers will be possible.
|
||||
Flags may also be used to indicate that only outbound (FI_WRITE) or
|
||||
inbound (FI_READ) data transfers should be disconnected.
|
||||
Regardless of the shutdown option selected, any queued completions
|
||||
associated with asynchronous operations may still be retrieved from the
|
||||
corresponding event queues.
|
||||
The flags parameter is reserved and must be 0.
|
||||
.PP
|
||||
Outstanding operations posted to the endpoint when fi_shutdown is called
|
||||
will be canceled or discarded.
|
||||
Notification of canceled operations will be reported by the provider to
|
||||
the corresponding completion queue(s).
|
||||
Discarded operations will silently be dropped, with no completions
|
||||
generated.
|
||||
The choice of canceling, versus discarding operations, is provider
|
||||
dependent.
|
||||
However, all canceled completions will be written before fi_shutdown
|
||||
returns.
|
||||
.PP
|
||||
When called, fi_shutdown does not affect completions already written to
|
||||
a completion queue.
|
||||
Any queued completions associated with asynchronous operations posted to
|
||||
the endpoint may still be retrieved from the corresponding completion
|
||||
queue(s) after an endpoint has been shutdown.
|
||||
.PP
|
||||
An FI_SHUTDOWN event will be generated for an endpoint when the remote
|
||||
peer issues a disconnect using fi_shutdown or abruptly closes the
|
||||
endpoint.
|
||||
Note that in the abrupt close case, an FI_SHUTDOWN event will only be
|
||||
generated if the peer system is reachable and a service or kernel agent
|
||||
on the peer system is able to notify the local endpoint that the
|
||||
connection has been aborted.
|
||||
.SS fi_getname / fi_getpeer
|
||||
.PP
|
||||
The fi_getname and fi_getpeer calls may be used to retrieve the local or
|
||||
@ -145,6 +152,19 @@ On error, a negative value corresponding to fabric errno is returned.
|
||||
Fabric errno values are defined in \f[C]rdma/fi_errno.h\f[].
|
||||
.SH ERRORS
|
||||
.SH NOTES
|
||||
.PP
|
||||
For connection-oriented endpoints, the buffer referenced by param will
|
||||
be sent as part of the connection request or response, subject to the
|
||||
constraints of the underlying connection protocol.
|
||||
Applications may use fi_getopt with the FI_OPT_CM_DATA_SIZE endpoint
|
||||
option to determine the size of application data that may be exchanged
|
||||
as part of a connection request or response.
|
||||
The fi_connect, fi_accept, and fi_reject calls will silently truncate
|
||||
any application data which cannot fit into underlying protocol messages.
|
||||
User data exchanged as part of the connection process is available as
|
||||
part of the fi_eq_cm_entry structure, for FI_CONNREQ and FI_CONNECTED
|
||||
events, or as additional err_data to fi_eq_err_entry, in the case of a
|
||||
rejected connection.
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
\f[C]fi_getinfo\f[](3), \f[C]fi_endpoint\f[](3), \f[C]fi_domain\f[](3),
|
@ -1,4 +1,4 @@
|
||||
.TH fi_cntr 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_cntr 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_cntr - Completion and event counter operations
|
@ -1,4 +1,4 @@
|
||||
.TH fi_control 3 "2015\-02\-16" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_control 3 "2015\-02\-16" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_control - Perform an operation on a fabric resource.
|
@ -1,4 +1,4 @@
|
||||
.TH fi_cq 3 "2015\-02\-01" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_cq 3 "2015\-02\-23" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_cq - Completion queue operations
|
||||
@ -411,6 +411,42 @@ Completion flags provide additional details regarding the completed
|
||||
operation.
|
||||
The following completion flags are defined.
|
||||
.PP
|
||||
*FI_SEND : Indicates that the completion was for a send operation.
|
||||
This flag may be combined with an FI_MSG or FI_TAGGED flag.
|
||||
.PP
|
||||
*FI_RECV : Indicates that the completion was for a receive operation.
|
||||
This flag may be combined with an FI_MSG or FI_TAGGED flag.
|
||||
.PP
|
||||
*FI_RMA : Indicates that an RMA operation completed.
|
||||
This flag may be combined with an FI_READ, FI_WRITE, FI_REMOTE_READ, or
|
||||
FI_REMOTE_WRITE flag.
|
||||
.PP
|
||||
*FI_ATOMIC : Indicates that an atomic operation completed.
|
||||
This flag may be combined with an FI_READ, FI_WRITE, FI_REMOTE_READ, or
|
||||
FI_REMOTE_WRITE flag.
|
||||
.PP
|
||||
*FI_MSG : Indicates that a message-based operation completed.
|
||||
This flag may be combined with an FI_SEND or FI_RECV flag.
|
||||
.PP
|
||||
*FI_TAGGED : Indicates that a tagged message operation completed.
|
||||
This flag may be combined with an FI_SEND or FI_RECV flag.
|
||||
.PP
|
||||
*FI_READ : Indicates that a locally initiated RMA or atomic read
|
||||
operation has completed.
|
||||
This flag may be combined with an FI_RMA or FI_ATOMIC flag.
|
||||
.PP
|
||||
*FI_WRITE : Indicates that a locally initiated RMA or atomic write
|
||||
operation has completed.
|
||||
This flag may be combined with an FI_RMA or FI_ATOMIC flag.
|
||||
.PP
|
||||
*FI_REMOTE_READ : Indicates that a remotely initiated RMA or atomic read
|
||||
operation has completed.
|
||||
This flag may be combined with an FI_RMA or FI_ATOMIC flag.
|
||||
.PP
|
||||
*FI_REMOTE_WRITE : Indicates that a remotely initiated RMA or atomic
|
||||
read operation has completed.
|
||||
This flag may be combined with an FI_RMA or FI_ATOMIC flag.
|
||||
.PP
|
||||
*FI_REMOTE_CQ_DATA : This indicates that remote CQ data is available as
|
||||
part of the completion.
|
||||
.PP
|
@ -1,4 +1,4 @@
|
||||
.TH fi_domain 3 "2015\-02\-01" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_domain 3 "2015\-02\-28" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_domain - Open a fabric access domain
|
||||
@ -97,6 +97,7 @@ struct\ fi_domain_attr\ {
|
||||
\ \ \ \ enum\ fi_progress\ \ \ \ \ \ control_progress;
|
||||
\ \ \ \ enum\ fi_progress\ \ \ \ \ \ data_progress;
|
||||
\ \ \ \ enum\ fi_resource_mgmt\ resource_mgmt;
|
||||
\ \ \ \ enum\ fi_av_type\ \ \ \ \ \ \ av_type;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ mr_key_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cq_data_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cq_cnt;
|
||||
@ -360,16 +361,46 @@ For unconnected endpoints, the endpoint must be re-enabled before it
|
||||
will accept new data transfer operations.
|
||||
For connected endpoints, the connection is torn down and must be
|
||||
re-established.
|
||||
.SS MR Key Size
|
||||
.SS AV Type (av_type)
|
||||
.PP
|
||||
Specifies the type of address vectors that are usable with this domain.
|
||||
For additional details on AV type, see \f[C]fi_av\f[](3).
|
||||
The following values may be specified.
|
||||
.PP
|
||||
\f[I]FI_AV_UNSPEC\f[] : Any address vector format is requested and
|
||||
supported.
|
||||
.PP
|
||||
\f[I]FI_AV_MAP\f[] : Only address vectors of type AV map are requested
|
||||
or supported.
|
||||
.PP
|
||||
\f[I]FI_AV_TABLE\f[] : Only address vectors of type AV index are
|
||||
requested or supported.
|
||||
.PP
|
||||
Address vectors are only used by connectionless endpoints.
|
||||
Applications that require the use of a specific type of address vector
|
||||
should set the domain attribute av_type to the necessary value when
|
||||
calling fi_getinfo.
|
||||
The value FI_AV_UNSPEC may be used to indicate that the provider can
|
||||
support either address vector format.
|
||||
In this case, a provider may return FI_AV_UNSPEC to indicate that either
|
||||
format is supportable, or may return another AV type to indicate the
|
||||
optimal AV type supported by this domain.
|
||||
.SS MR Key Size (mr_key_size)
|
||||
.PP
|
||||
Size of the memory region remote access key, in bytes.
|
||||
Applications that request their own MR key must select a value within
|
||||
the range specified by this value.
|
||||
.SS CQ Data Size
|
||||
.SS CQ Data Size (cq_data_size)
|
||||
.PP
|
||||
The number of bytes that the provider supports for remote CQ data.
|
||||
See the FI_REMOTE_CQ_DATA flag (fi_getinfo) for the use of remote CQ
|
||||
data.
|
||||
Applications may include a small message with a data transfer that is
|
||||
placed directly into a remote completion queue as part of a completion
|
||||
event.
|
||||
This is referred to as remote CQ data (sometimes referred to as
|
||||
immediate data).
|
||||
This field indicates the number of bytes that the provider supports for
|
||||
remote CQ data.
|
||||
If supported (non-zero value is returned), the minimum size of remote CQ
|
||||
data must be at least 4-bytes.
|
||||
.SS Completion Queue Count (cq_cnt)
|
||||
.PP
|
||||
The total number of completion queues supported by the domain, relative
|
@ -1,4 +1,4 @@
|
||||
.TH fi_endpoint 3 "2015\-02\-12" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_endpoint 3 "2015\-02\-27" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_endpoint - Fabric endpoint operations
|
||||
@ -222,6 +222,14 @@ When closing a scalable endpoint, there must be no opened transmit
|
||||
contexts, or receive contexts associated with the scalable endpoint.
|
||||
If resources are still associated with the scalable endpoint when
|
||||
attempting to close, the call will return -FI_EBUSY.
|
||||
.PP
|
||||
Outstanding operations posted to the endpoint when fi_close is called
|
||||
will be discarded.
|
||||
Discarded operations will silently be dropped, with no completions
|
||||
reported.
|
||||
Additionally, a provider may discard previously completed operations
|
||||
from the associated completion queue(s).
|
||||
The behavior to discard completed operations is provider specific.
|
||||
.SS fi_ep_bind
|
||||
.PP
|
||||
fi_ep_bind is used to associate an endpoint with hardware resources.
|
||||
@ -415,6 +423,13 @@ needed on receives posted after the value has been changed.
|
||||
It is recommended that applications that want to override the default
|
||||
MIN_MULTI_RECV value set this option before enabling the corresponding
|
||||
endpoint.
|
||||
.IP \[bu] 2
|
||||
\f[I]FI_OPT_CM_DATA_SIZE - size_t\f[] : Defines the size of available
|
||||
space in CM messages for user-defined data.
|
||||
This value limits the amount of data that applications can exchange
|
||||
between peer endpoints using the fi_connect, fi_accept, and fi_reject
|
||||
operations.
|
||||
This option is read only.
|
||||
.SS fi_rx_size_left
|
||||
.PP
|
||||
The fi_rx_size_left call returns a lower bound on the number of receive
|
||||
@ -443,23 +458,44 @@ an endpoint.
|
||||
.nf
|
||||
\f[C]
|
||||
struct\ fi_ep_attr\ {
|
||||
\ \ \ \ uint32_t\ \ protocol;
|
||||
\ \ \ \ uint32_t\ \ protocol_version;
|
||||
\ \ \ \ size_t\ \ \ \ max_msg_size;
|
||||
\ \ \ \ size_t\ \ \ \ inject_size;
|
||||
\ \ \ \ size_t\ \ \ \ total_buffered_recv;
|
||||
\ \ \ \ size_t\ \ \ \ msg_prefix_size;
|
||||
\ \ \ \ size_t\ \ \ \ max_order_raw_size;
|
||||
\ \ \ \ size_t\ \ \ \ max_order_war_size;
|
||||
\ \ \ \ size_t\ \ \ \ max_order_waw_size;
|
||||
\ \ \ \ uint64_t\ \ mem_tag_format;
|
||||
\ \ \ \ uint64_t\ \ msg_order;
|
||||
\ \ \ \ uint64_t\ \ comp_order;
|
||||
\ \ \ \ size_t\ \ \ \ tx_ctx_cnt;
|
||||
\ \ \ \ size_t\ \ \ \ rx_ctx_cnt;
|
||||
\ \ \ \ enum\ fi_ep_type\ ep_type;
|
||||
\ \ \ \ uint32_t\ \ \ \ \ \ \ \ protocol;
|
||||
\ \ \ \ uint32_t\ \ \ \ \ \ \ \ protocol_version;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ max_msg_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ msg_prefix_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ max_order_raw_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ max_order_war_size;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ max_order_waw_size;
|
||||
\ \ \ \ uint64_t\ \ \ \ \ \ \ \ mem_tag_format;
|
||||
\ \ \ \ uint64_t\ \ \ \ \ \ \ \ msg_order;
|
||||
\ \ \ \ uint64_t\ \ \ \ \ \ \ \ comp_order;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ tx_ctx_cnt;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ rx_ctx_cnt;
|
||||
};
|
||||
\f[]
|
||||
.fi
|
||||
.SS type - Endpoint Type
|
||||
.PP
|
||||
If specified, indicates the type of fabric interface communication
|
||||
desired.
|
||||
Supported types are:
|
||||
.PP
|
||||
\f[I]FI_EP_UNSPEC\f[] : The type of endpoint is not specified.
|
||||
This is usually provided as input, with other attributes of the endpoint
|
||||
or the provider selecting the type.
|
||||
.PP
|
||||
\f[I]FI_EP_MSG\f[] : Provides a reliable, connection-oriented data
|
||||
transfer service with flow control that maintains message boundaries.
|
||||
.PP
|
||||
\f[I]FI_EP_DGRAM\f[] : Supports a connectionless, unreliable datagram
|
||||
communication.
|
||||
Message boundaries are maintained, but the maximum message size may be
|
||||
limited to the fabric MTU.
|
||||
Flow control is not guaranteed.
|
||||
.PP
|
||||
\f[I]FI_EP_RDM\f[] : Reliable datagram message.
|
||||
Provides a reliable, unconnected data transfer service with flow control
|
||||
that maintains message boundaries.
|
||||
.SS Protocol
|
||||
.PP
|
||||
Specifies the low-level end to end protocol employed by the provider.
|
||||
@ -508,15 +544,6 @@ lesser version.
|
||||
.PP
|
||||
Defines the maximum size for an application data transfer as a single
|
||||
operation.
|
||||
.SS inject_size - Inject Size
|
||||
.PP
|
||||
Defines the default inject operation size (see the FI_INJECT flag) that
|
||||
an endpoint will support.
|
||||
This value applies per send operation.
|
||||
.SS total_buffered_recv - Total Buffered Receive
|
||||
.PP
|
||||
Defines the total available space allocated by the provider to buffer
|
||||
received messages (see the FI_BUFFERED_RECV flag).
|
||||
.SS msg_prefix_size - Message Prefix Size
|
||||
.PP
|
||||
Specifies the size of any required message prefix buffer space.
|
||||
@ -848,8 +875,6 @@ See the fi_endpoint Completion Ordering section.
|
||||
.PP
|
||||
\f[I]inject_size\f[] : The requested inject operation size (see the
|
||||
FI_INJECT flag) that the context will support.
|
||||
This value must be equal to or less than the inject_size of the
|
||||
associated endpoint.
|
||||
See the fi_endpoint Inject Size section.
|
||||
.PP
|
||||
\f[I]size\f[] : The size of the context, in bytes.
|
||||
@ -946,10 +971,10 @@ specified of the associated endpoint.
|
||||
See the fi_endpoint Completion Ordering section.
|
||||
.PP
|
||||
\f[I]total_buffered_recv\f[] : Defines the total available space
|
||||
allocated by the provider to buffer received messages on the context.
|
||||
This value must be less than or equal to that specified for the
|
||||
associated endpoint.
|
||||
See the fi_endpoint Total Buffered Receive section.
|
||||
allocated by the provider to buffer messages that are received for which
|
||||
there is no matching receive operation.
|
||||
If set to 0, any messages that arrive before a receive buffer has been
|
||||
posted are lost.
|
||||
.PP
|
||||
\f[I]size\f[] : The size of the context, in bytes.
|
||||
The size is usually used as an output value by applications wishing to
|
||||
@ -1024,15 +1049,13 @@ data transfer operations, where a flags parameter is not available.
|
||||
Data transfer operations that take flags as input override the op_flags
|
||||
value of an endpoint.
|
||||
.PP
|
||||
\f[I]FI_INJECT\f[] : Indicates that all outbound data buffer should be
|
||||
\f[I]FI_INJECT\f[] : Indicates that all outbound data buffers should be
|
||||
returned to the user\[aq]s control immediately after a data transfer
|
||||
call returns, even if the operation is handled asynchronously.
|
||||
This may require that the provider copy the data into a local buffer and
|
||||
transfer out of that buffer.
|
||||
A provider may limit the total amount of send data that may be buffered
|
||||
and/or the size of a single send.
|
||||
Applications may discover and modify these limits using the
|
||||
endpoint\[aq]s getopt and setopt interfaces.
|
||||
.PP
|
||||
\f[I]FI_MULTI_RECV\f[] : Applies to posted receive operations.
|
||||
This flag allows the user to post a single buffer that will receive
|
@ -1,4 +1,4 @@
|
||||
.TH fi_eq 3 "2015\-02\-01" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_eq 3 "2015\-02\-23" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_eq - Event queue operations
|
||||
@ -215,8 +215,8 @@ information regarding the format associated with each event.
|
||||
\f[I]Asynchronous Control Operations\f[] : Asynchronous control
|
||||
operations are basic requests that simply need to generate an event to
|
||||
indicate that they have completed.
|
||||
These include the following types of events: memory registration,
|
||||
address vector resolution, and connection established.
|
||||
These include the following types of events: memory registration and
|
||||
address vector resolution.
|
||||
.PP
|
||||
Control requests report their completion by inserting a
|
||||
\f[C]struct\ \ \ fi_eq_entry\f[] into the EQ.
|
||||
@ -236,16 +236,18 @@ For the completion of basic asynchronous control operations, the
|
||||
returned event will indicate the operation that has completed, and the
|
||||
fid will reference the fabric descriptor associated with the event.
|
||||
For memory registration, this will be an FI_MR_COMPLETE event and the
|
||||
fid_mr, address resolution will reference an FI_AV_COMPLETE event and
|
||||
fid_av, and CM events will refer to a FI_CONNECTED event and fid_ep.
|
||||
fid_mr; address resolution will reference an FI_AV_COMPLETE event and
|
||||
fid_av.
|
||||
The context field will be set to the context specified as part of the
|
||||
operation, if available, otherwise the context will be associated with
|
||||
the fabric descriptor.
|
||||
.PP
|
||||
\f[I]Connection Request Notification\f[] : Connection requests are
|
||||
unsolicited notifications that a remote endpoint wishes to establish a
|
||||
new connection to a listening passive endpoint.
|
||||
Connection requests are reported using
|
||||
\f[I]Connection Notification\f[] : Connection notifications are
|
||||
connection management notifications used to setup or teardown
|
||||
connections between endpoints.
|
||||
There are three connection notification events: FI_CONNREQ,
|
||||
FI_CONNECTED, and FI_SHUTDOWN.
|
||||
Connection notifications are reported using
|
||||
\f[C]struct\ \ \ fi_eq_cm_entry\f[]:
|
||||
.IP
|
||||
.nf
|
||||
@ -258,10 +260,12 @@ struct\ fi_eq_cm_entry\ {
|
||||
\f[]
|
||||
.fi
|
||||
.PP
|
||||
Connection request events are of type FI_CONNREQ.
|
||||
A connection request (FI_CONNREQ) event indicates that a remote endpoint
|
||||
wishes to establish a new connection to a listening, or passive,
|
||||
endpoint.
|
||||
The fid is the passive endpoint.
|
||||
Information regarding the requested endpoint\[aq]s capabilities and
|
||||
attributes are available from the info field.
|
||||
Information regarding the requested, active endpoint\[aq]s capabilities
|
||||
and attributes are available from the info field.
|
||||
The application is responsible for freeing this structure by calling
|
||||
fi_freeinfo when it is no longer needed.
|
||||
The fi_info connreq field will reference the connection request
|
||||
@ -287,13 +291,20 @@ protocol padding.
|
||||
As a result, the returned length may be larger than that specified by
|
||||
the connecting peer.
|
||||
.PP
|
||||
\f[I]Connection Shutdown Notification\f[] : Notification that a remote
|
||||
peer has disconnected from an active endpoint is done through the
|
||||
FI_SHUTDOWN event.
|
||||
Shutdown notification uses struct fi_eq_entry as declared above.
|
||||
If a connection request has been accepted, an FI_CONNECTED event will be
|
||||
generated on both sides of the connection.
|
||||
The active side -- one that called fi_connect() -- may receive user data
|
||||
as part of the FI_CONNECTED event.
|
||||
The user data is passed to the connection manager on the passive side
|
||||
through the fi_accept call.
|
||||
User data is not provided with an FI_CONNECTED event on the listening
|
||||
side of the connection.
|
||||
.PP
|
||||
Notification that a remote peer has disconnected from an active endpoint
|
||||
is done through the FI_SHUTDOWN event.
|
||||
Shutdown notification uses struct fi_eq_cm_entry as declared above.
|
||||
The fid field for a shutdown notification refers to the active
|
||||
endpoint\[aq]s fid_ep.
|
||||
The context field is set to NULL.
|
||||
.SS fi_eq_sread
|
||||
.PP
|
||||
The fi_eq_sread call is the blocking (or synchronous) equivalent to
|
||||
@ -333,6 +344,7 @@ struct\ fi_eq_err_entry\ {
|
||||
\ \ \ \ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ err;\ \ \ \ \ \ \ \ /*\ positive\ error\ code\ */
|
||||
\ \ \ \ int\ \ \ \ \ \ \ \ \ \ \ \ \ \ prov_errno;\ /*\ provider\ error\ code\ */
|
||||
\ \ \ \ void\ \ \ \ \ \ \ \ \ \ \ \ *err_data;\ \ \ /*\ additional\ error\ data\ */
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ err_data_size;\ /*\ size\ of\ err_data\ */
|
||||
};
|
||||
\f[]
|
||||
.fi
|
||||
@ -344,10 +356,15 @@ The context field will be set to the context specified as part of the
|
||||
operation.
|
||||
.PP
|
||||
The general reason for the error is provided through the err field.
|
||||
Provider specific error information may also be available through the
|
||||
prov_errno and err_data fields.
|
||||
Provider or operational specific error information may also be available
|
||||
through the prov_errno and err_data fields.
|
||||
Users may call fi_eq_strerror to convert provider specific error
|
||||
information into a printable string for debugging purposes.
|
||||
.PP
|
||||
If err_data_size is > 0, then the buffer referenced by err_data is
|
||||
directly user-accessible.
|
||||
Applications which read the err_data buffer must ensure that they do not
|
||||
read past the end of the referenced buffer.
|
||||
.SH RETURN VALUES
|
||||
.PP
|
||||
fi_eq_open : Returns 0 on success.
|
@ -1,4 +1,4 @@
|
||||
.TH fi_errno 3 "2015\-01\-08" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_errno 3 "2015\-01\-08" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_errno - fabric errors
|
@ -1,4 +1,4 @@
|
||||
.TH fi_fabric 3 "2015\-01\-24" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_fabric 3 "2015\-01\-24" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_fabric - Fabric domain operations
|
@ -1,7 +1,9 @@
|
||||
.TH fi_getinfo 3 "2015\-02\-11" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_getinfo 3 "2015\-02\-28" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_getinfo / fi_freeinfo - Obtain / free fabric interface information
|
||||
.PP
|
||||
fi_allocinfo / fi_dupinfo - Allocate / duplicate an fi_info structure
|
||||
.SH SYNOPSIS
|
||||
.IP
|
||||
.nf
|
||||
@ -13,6 +15,8 @@ int\ fi_getinfo(int\ version,\ const\ char\ *node,\ const\ char\ *service,
|
||||
|
||||
void\ fi_freeinfo(struct\ fi_info\ *info);
|
||||
|
||||
struct\ fi_info\ *fi_allocinfo(void);
|
||||
|
||||
struct\ fi_info\ *fi_dupinfo(const\ struct\ fi_info\ *info);
|
||||
\f[]
|
||||
.fi
|
||||
@ -33,12 +37,11 @@ criteria for selecting the returned fabric information.
|
||||
containing response information.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Returns information about available fabric services for reaching the
|
||||
specified node or service, subject to any provided hints.
|
||||
Callers must provide at least one of the node, service, or hints
|
||||
parameters.
|
||||
If node and service are NULL, then the hints src_addr and/or dest_addr
|
||||
fields of the fi_info structure must be specified.
|
||||
fi_getinfo returns information about available fabric services for
|
||||
reaching specified node or service, subject to any provided hints.
|
||||
Callers may specify NULL for node, service, and hints in order to
|
||||
retrieve information about what providers are available and their
|
||||
optimal usage models.
|
||||
If no matching fabric information is available, info will be set to
|
||||
NULL.
|
||||
.PP
|
||||
@ -52,10 +55,10 @@ additional criteria in their search hints.
|
||||
Relaxing or eliminating input hints will increase the number and type of
|
||||
endpoints that are available.
|
||||
Providers that return multiple endpoints to a single fi_getinfo call
|
||||
should return the endpoints that are highest performing.
|
||||
should return the endpoints that are highest performing first.
|
||||
Providers may indicate that an endpoint and domain can support
|
||||
additional capabilities than those requested by the user only if such
|
||||
support will not adversely affect performance.
|
||||
support will not adversely affect application performance or security.
|
||||
.PP
|
||||
The version parameter is used by the application to request the desired
|
||||
version of the interfaces.
|
||||
@ -73,8 +76,8 @@ This protects against the application being built from source against a
|
||||
newer version of the library that introduces new fields to data
|
||||
structures, which would not be initialized by the application.
|
||||
.PP
|
||||
Either node, service, or hints must be provided, with any combination
|
||||
being supported.
|
||||
Node, service, or hints may be provided, with any combination being
|
||||
supported.
|
||||
If node is provided, fi_getinfo will attempt to resolve the fabric
|
||||
address to the given node.
|
||||
The hints parameter, if provided, may be used to control the resulting
|
||||
@ -84,6 +87,11 @@ addressing information based on the provided hints.
|
||||
.PP
|
||||
The caller must call fi_freeinfo to release fi_info structures returned
|
||||
by this call.
|
||||
.PP
|
||||
The fi_allocinfo call will allocate and zero an fi_info structure and
|
||||
all related substructures.
|
||||
The fi_dupinfo will duplicate a single fi_info structure and all the
|
||||
substructures within it.
|
||||
.SH FI_INFO
|
||||
.IP
|
||||
.nf
|
||||
@ -92,7 +100,6 @@ struct\ fi_info\ {
|
||||
\ \ \ \ struct\ fi_info\ \ \ \ \ \ \ \ *next;
|
||||
\ \ \ \ uint64_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ caps;
|
||||
\ \ \ \ uint64_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ mode;
|
||||
\ \ \ \ enum\ fi_ep_type\ \ \ \ \ \ \ ep_type;
|
||||
\ \ \ \ uint32_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ addr_format;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ src_addrlen;
|
||||
\ \ \ \ size_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ dest_addrlen;
|
||||
@ -119,10 +126,6 @@ below.
|
||||
\f[I]mode\f[] : Operational modes supported by the application.
|
||||
See the \f[I]Mode\f[] section below.
|
||||
.PP
|
||||
\f[I]ep_type - endpoint type\f[] : If specified, indicates the type of
|
||||
fabric interface communication desired.
|
||||
Supported types are listed in the \f[I]Endpoint types\f[] section below.
|
||||
.PP
|
||||
\f[I]addr_format - address format\f[] : If specified, indicates the
|
||||
format of addresses referenced by the fabric interfaces and data
|
||||
structures.
|
||||
@ -130,15 +133,17 @@ Supported formats are listed in the \f[I]Addressing formats\f[] section
|
||||
below.
|
||||
.PP
|
||||
\f[I]src_addrlen - source address length\f[] : Indicates the length of
|
||||
the source address (must be specified if \f[I]src_addr\f[] is
|
||||
specified).
|
||||
This field will be ignored in hints if FI_SOURCE is specified.
|
||||
the source address.
|
||||
This value must be > 0 if \f[I]src_addr\f[] is non-NULL.
|
||||
This field will be ignored in hints if FI_SOURCE is specified, or
|
||||
\f[I]src_addr\f[] is NULL.
|
||||
.PP
|
||||
\f[I]dest_addrlen - destination address length\f[] : Indicates the
|
||||
length of the destination address (must be specified if
|
||||
\f[I]dest_addr\f[] is specified).
|
||||
length of the destination address.
|
||||
This value must be > 0 if \f[I]dest_addr\f[] is non-NULL.
|
||||
This field will be ignored in hints unless the node and service
|
||||
parameters are NULL or FI_SOURCE is specified.
|
||||
parameters are NULL or FI_SOURCE is specified, or if \f[I]dst_addr\f[]
|
||||
is NULL.
|
||||
.PP
|
||||
\f[I]src_addr - source address\f[] : If specified, indicates the source
|
||||
address.
|
||||
@ -210,7 +215,7 @@ Interface capabilities are obtained by OR-ing the following flags
|
||||
together.
|
||||
If capabilities in the hint parameter are set to 0, the underlying
|
||||
provider will return the set of capabilities which are supported.
|
||||
Otherwise, providers will only return data matching the specified set of
|
||||
Otherwise, providers will return data matching the specified set of
|
||||
capabilities.
|
||||
Providers may indicate support for additional capabilities beyond those
|
||||
requested when the use of expanded capabilities will not adversely
|
||||
@ -275,28 +280,12 @@ regions be backed by allocated memory pages.
|
||||
multiple receive contexts allow an initiator to target (or name) a
|
||||
specific receive context as part of a data transfer operation.
|
||||
.PP
|
||||
\f[I]FI_BUFFERED_RECV\f[] : Requests that the communication endpoint
|
||||
should attempt to queue inbound data that arrives before a receive
|
||||
buffer has been posted.
|
||||
In the absence of this flag, any messages that arrive before a receive
|
||||
is posted are lost.
|
||||
Applications may access endpoint options (getopt/setopt) to determine
|
||||
the size of available buffered receive space.
|
||||
.PP
|
||||
\f[I]FI_DIRECTED_RECV\f[] : Requests that the communication endpoint use
|
||||
the source address of an incoming message when matching it with a
|
||||
receive buffer.
|
||||
If this capability is not set, then the src_addr parameter for msg and
|
||||
tagged receive operations is ignored.
|
||||
.PP
|
||||
\f[I]FI_INJECT\f[] : Indicates that the endpoint be able to support the
|
||||
FI_INJECT flag on data transfer operations and the \[aq]inject\[aq] data
|
||||
transfer calls.
|
||||
The minimum supported size of an inject operation that an endpoint with
|
||||
this capability must support is 8-bytes.
|
||||
Applications may access endpoint options (getopt/setopt) to determine
|
||||
injected transfer limits.
|
||||
.PP
|
||||
\f[I]FI_MULTI_RECV\f[] : Specifies that the endpoint must support the
|
||||
FI_MULTI_RECV flag when posting receive buffers.
|
||||
.PP
|
||||
@ -334,18 +323,6 @@ This flag requires that FI_RMA and/or FI_ATOMIC be set.
|
||||
capable of receiving write memory operations from remote endpoints.
|
||||
This flag requires that FI_RMA and/or FI_ATOMIC be set.
|
||||
.PP
|
||||
\f[I]FI_REMOTE_CQ_DATA\f[] : Applications may include a small message
|
||||
with a data transfer that is placed directly into a remote event queue
|
||||
as part of a completion event.
|
||||
This is referred to as remote CQ data (sometimes referred to as
|
||||
immediate data).
|
||||
The FI_REMOTE_CQ_DATA indicates that an endpoint must support the
|
||||
FI_REMOTE_CQ_DATA flag on data transfer operations.
|
||||
The minimum supported size of remote CQ data that an endpoint with this
|
||||
capability must support is 4-bytes.
|
||||
Applications may check the domain attributes to determine remote CQ data
|
||||
limits.
|
||||
.PP
|
||||
\f[I]FI_REMOTE_SIGNAL\f[] : Indicates that the endpoint support the
|
||||
FI_REMOTE_SIGNAL flag on data transfer operations.
|
||||
Support requires marking outbound data transfers as signaled and
|
||||
@ -374,6 +351,24 @@ operation.
|
||||
Fenced operations are often used to enforce ordering between operations
|
||||
that are not otherwise guaranteed by the underlying provider or
|
||||
protocol.
|
||||
.PP
|
||||
Capabilities may be grouped into two general categories: primary and
|
||||
secondary.
|
||||
Primary capabilities must explicitly be requested by an application, and
|
||||
a provider must enable support for only those primary capabilities which
|
||||
were selected.
|
||||
Secondary capabilities may optionally be requested by an application.
|
||||
If requested, a provider must support the capability or fail the
|
||||
fi_getinfo request (FI_ENOSYS).
|
||||
A provider may optionally report non-selected secondary capabilities if
|
||||
doing so would not compromise performance or security.
|
||||
.PP
|
||||
Primary capabilities: FI_MSG, FI_RMA, FI_TAGGED, FI_ATOMIC,
|
||||
FI_NAMED_RX_CTX, FI_DIRECTD_RECV, FI_READ, FI_WRITE, FI_RECV, FI_SEND,
|
||||
FI_REMOTE_READ, and FI_REMOTE_WRITE.
|
||||
.PP
|
||||
Secondary capabilities: FI_DYNAMIC_MR, FI_MULTI_RECV, FI_SOURCE,
|
||||
FI_CANCEL, FI_FENCE, FI_REMOTE_COMPLETE
|
||||
.SH MODE
|
||||
.PP
|
||||
The operational mode bits are used to convey requirements that an
|
||||
@ -473,24 +468,6 @@ The FI_ASYNC_IOV mode indicates that the application must provide the
|
||||
buffering needed for the IO vectors.
|
||||
When set, an application must not modify an IO vector until the
|
||||
associated operation has completed.
|
||||
.SH ENDPOINT TYPES
|
||||
.PP
|
||||
\f[I]FI_EP_UNSPEC\f[] : The type of endpoint is not specified.
|
||||
This is usually provided as input, with other attributes of the endpoint
|
||||
or the provider selecting the type.
|
||||
.PP
|
||||
\f[I]FI_EP_MSG\f[] : Provides a reliable, connection-oriented data
|
||||
transfer service with flow control that maintains message boundaries.
|
||||
.PP
|
||||
\f[I]FI_EP_DGRAM\f[] : Supports a connectionless, unreliable datagram
|
||||
communication.
|
||||
Message boundaries are maintained, but the maximum message size may be
|
||||
limited to the fabric MTU.
|
||||
Flow control is not guaranteed.
|
||||
.PP
|
||||
\f[I]FI_EP_RDM\f[] : Reliable datagram message.
|
||||
Provides a reliable, unconnected data transfer service with flow control
|
||||
that maintains message boundaries.
|
||||
.SH ADDRESSING FORMATS
|
||||
.PP
|
||||
Multiple fabric interfaces take as input either a source or destination
|
||||
@ -552,11 +529,13 @@ On error, fi_getinfo() returns a negative value corresponding to fabric
|
||||
errno.
|
||||
Fabric errno values are defined in \f[C]rdma/fi_errno.h\f[].
|
||||
.PP
|
||||
fi_allocinfo() returns a pointer to a new fi_info structure on success,
|
||||
or NULL on error.
|
||||
fi_dupinfo() duplicates a single fi_info structure and all the
|
||||
substructures within it and returns a pointer to the new fi_info
|
||||
structure.
|
||||
This new fi_info structure must be freed via fi_freeinfo().
|
||||
fi_dupinfo() returns NULL on error.
|
||||
substructures within it, returning a pointer to the new fi_info
|
||||
structure on success, or NULL on error.
|
||||
Both calls require that the returned fi_info structure be freed via
|
||||
fi_freeinfo().
|
||||
.SH ERRORS
|
||||
.PP
|
||||
\f[I]FI_EBADFLAGS\f[] : The specified endpoint or domain capability or
|
@ -1,4 +1,4 @@
|
||||
.TH fi_mr 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_mr 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_mr - Memory region operations
|
@ -1,4 +1,4 @@
|
||||
.TH fi_msg 3 "2015\-02\-06" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_msg 3 "2015\-03\-04" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_msg - Message data transfer operations
|
||||
@ -101,7 +101,7 @@ Completed message operations are reported to the user through one or
|
||||
more event collectors associated with the endpoint.
|
||||
Users provide context which are associated with each operation, and is
|
||||
returned to the user as part of the event completion.
|
||||
See fi_eq for completion event details.
|
||||
See fi_cq for completion event details.
|
||||
.SS fi_send
|
||||
.PP
|
||||
The call fi_send transfers the data contained in the user-specified data
|
||||
@ -248,6 +248,6 @@ operations.
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
\f[C]fi_getinfo\f[](3), \f[C]fi_endpoint\f[](3), \f[C]fi_domain\f[](3),
|
||||
\f[C]fi_eq\f[](3)
|
||||
\f[C]fi_cq\f[](3)
|
||||
.SH AUTHORS
|
||||
OpenFabrics.
|
@ -1,4 +1,4 @@
|
||||
.TH fi_poll 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "Libfabric v1.0.0rc3"
|
||||
.TH fi_poll 3 "2015\-01\-29" "Libfabric Programmer\[aq]s Manual" "\@VERSION\@"
|
||||
.SH NAME
|
||||
.PP
|
||||
fi_poll - Polling and wait set operations
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
x
Ссылка в новой задаче
Block a user