Skip to content

Instantly share code, notes, and snippets.

@joerns
Last active June 24, 2016 07:28
Show Gist options
  • Save joerns/c0631a32840b96d25380cc1e91a1e7a0 to your computer and use it in GitHub Desktop.
Save joerns/c0631a32840b96d25380cc1e91a1e7a0 to your computer and use it in GitHub Desktop.
libfabric cannot use verbs provider for client
$ gcc test.c -o test -l fabric -g -O0
$ $ FI_PROVIDER=verbs ./test
error: fi_getinfo failed: -61 'No data available'
$ fi_info -v -t FI_EP_MSG -v -f verbs
---
fi_info:
caps: [ FI_MSG, FI_RMA, FI_ATOMIC, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE ]
mode: [ FI_LOCAL_MR ]
addr_format: FI_SOCKADDR_IN
src_addrlen: 16
dest_addrlen: 0
src_addr: 127.0.0.1
dest_addr: (null)
handle: (null)
fi_tx_attr:
caps: [ FI_MSG, FI_RMA, FI_ATOMIC, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE ]
mode: [ FI_LOCAL_MR ]
op_flags: [ ]
msg_order: [ FI_ORDER_RAR, FI_ORDER_RAW, FI_ORDER_RAS, FI_ORDER_WAW, FI_ORDER_WAS, FI_ORDER_SAW, FI_ORDER_SAS, FI_ORDER_STRICT ]
comp_order: [ ]
inject_size: 88
size: 495
iov_limit: 6
rma_iov_limit: 1
fi_rx_attr:
caps: [ FI_MSG, FI_RMA, FI_ATOMIC, FI_READ, FI_WRITE, FI_RECV, FI_SEND, FI_REMOTE_READ, FI_REMOTE_WRITE ]
mode: [ FI_RX_CQ_DATA, FI_LOCAL_MR ]
op_flags: [ ]
msg_order: [ FI_ORDER_RAR, FI_ORDER_RAW, FI_ORDER_RAS, FI_ORDER_WAW, FI_ORDER_WAS, FI_ORDER_SAW, FI_ORDER_SAS, FI_ORDER_STRICT ]
comp_order: [ ]
total_buffered_recv: 0
size: 512
iov_limit: 4
fi_ep_attr:
type: FI_EP_MSG
protocol: FI_PROTO_RDMA_CM_IB_RC
protocol_version: 1
max_msg_size: 1073741824
msg_prefix_size: 0
max_order_raw_size: 1073741824
max_order_war_size: 0
max_order_waw_size: 1073741824
mem_tag_format: 0x0000000000000000
tx_ctx_cnt: 1
rx_ctx_cnt: 1
fi_domain_attr:
domain: 0x0
name: mlx4_0
threading: FI_THREAD_SAFE
control_progress: FI_PROGRESS_AUTO
data_progress: FI_PROGRESS_AUTO
resouce_mgmt: FI_RM_UNSPEC
av_type: FI_AV_UNSPEC
mr_mode: FI_MR_BASIC
mr_key_size: 4
cq_data_size: 4
cq_cnt: 65408
ep_cnt: 392632
tx_ctx_cnt: 1024
rx_ctx_cnt: 1024
max_ep_tx_ctx: 392632
max_ep_rx_ctx: 392632
max_ep_stx_ctx: 0
max_ep_srx_ctx: 0
fi_fabric_attr:
name: IB-0x80fe
prov_name: verbs
prov_version: 1.0
$ FI_PROVIDER=verbs FI_LOG_LEVEL=debug ./test
libfabric:core:core:fi_param_define_():226<info> registered var provider
libfabric:core:core:fi_param_get_():285<info> read string var provider=verbs
libfabric:core:core:fi_param_define_():226<info> registered var provider_path
libfabric:core:core:fi_param_get_():275<info> variable provider_path=<not set>
libfabric:core:core:fi_register_provider():123<info> registering provider: usnic (1.0)
libfabric:core:core:fi_register_provider():140<info> "usnic" filtered by provider include/exclude list, skipping
libfabric:usnic:fabric:usdf_fini():891<trace>
libfabric:core:core:fi_register_provider():123<info> registering provider: verbs (1.0)
libfabric:core:core:fi_register_provider():123<info> registering provider: UDP (1.0)
libfabric:core:core:fi_register_provider():140<info> "UDP" filtered by provider include/exclude list, skipping
libfabric:sockets:core:fi_param_define_():226<info> registered var pe_waittime
libfabric:sockets:core:fi_param_define_():226<info> registered var max_conn_retry
libfabric:sockets:core:fi_param_define_():226<info> registered var def_conn_map_sz
libfabric:sockets:core:fi_param_define_():226<info> registered var def_av_sz
libfabric:sockets:core:fi_param_define_():226<info> registered var def_cq_sz
libfabric:sockets:core:fi_param_define_():226<info> registered var def_eq_sz
libfabric:sockets:core:fi_param_define_():226<info> registered var pe_affinity
libfabric:core:core:fi_register_provider():123<info> registering provider: sockets (1.0)
libfabric:core:core:fi_register_provider():140<info> "sockets" filtered by provider include/exclude list, skipping
libfabric:verbs:fabric:fi_ibv_create_ep():181<info> rdma_create_ep: Invalid argument(22)
libfabric:core:core:fi_getinfo_():545<warn> fi_getinfo: provider verbs returned -61 (No data available)
error: fi_getinfo failed: -61 'No data available'
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <rdma/fabric.h>
#include <rdma/fi_eq.h>
#include <rdma/fi_endpoint.h>
#include <rdma/fi_cm.h>
#include <rdma/fi_errno.h>
#define ERROR(x, ...) \
do { \
fprintf(stderr, "error: "x"\n", __VA_ARGS__);\
exit(EXIT_FAILURE);\
} while(0)
int main()
{
int ret;
struct fi_info* fi;
struct fid_fabric *fabric;
struct fi_info* hints;
struct fi_eq_attr eq_attr = {
.wait_obj = FI_WAIT_UNSPEC // waiting only through fi_ calls (no epoll)
};
hints = fi_allocinfo();
hints->ep_attr->type = FI_EP_MSG;
hints->caps = FI_MSG;
hints->mode = FI_LOCAL_MR;
if(ret = fi_getinfo(FI_VERSION(1, 1), "127.0.0.1", "12345", 0, hints, &fi))
{
ERROR("fi_getinfo failed: %d '%s'", ret, fi_strerror(-ret));
}
printf("info: %s\n", fi_tostr(fi, FI_TYPE_INFO));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment