Trying to make IB ptl work with modex_exchange after the
name change of module -> component. This commit was SVN r1995.
Этот коммит содержится в:
родитель
882c458534
Коммит
ba7c1f377e
@ -74,6 +74,7 @@ int mca_ptl_ib_add_procs(
|
||||
|
||||
D_PRINT("Adding %d procs\n", nprocs);
|
||||
|
||||
|
||||
for(i = 0; i < nprocs; i++) {
|
||||
|
||||
ompi_proc = ompi_procs[i];
|
||||
|
@ -140,7 +140,7 @@ static int mca_ptl_ib_component_send(void)
|
||||
ud_qp_addr = (mca_ptl_ib_ud_addr_t*) malloc(size);
|
||||
|
||||
if(NULL == ud_qp_addr) {
|
||||
return OMPI_ERROR;
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||
@ -155,6 +155,10 @@ static int mca_ptl_ib_component_send(void)
|
||||
rc = mca_base_modex_send(&mca_ptl_ib_component.super.ptlm_version,
|
||||
ud_qp_addr, size);
|
||||
|
||||
if(OMPI_SUCCESS != rc) {
|
||||
D_PRINT("mca_base_modex_send didn't succeed : %d\n", rc);
|
||||
}
|
||||
|
||||
free(ud_qp_addr);
|
||||
|
||||
return rc;
|
||||
@ -171,11 +175,11 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
||||
bool *allow_multi_user_threads,
|
||||
bool *have_hidden_threads)
|
||||
{
|
||||
mca_ptl_base_module_t **ptls;
|
||||
mca_ptl_base_module_t **modules;
|
||||
int i, ret;
|
||||
|
||||
uint32_t num_hcas;
|
||||
mca_ptl_ib_module_t* ptl_ib = NULL;
|
||||
mca_ptl_ib_module_t* ib_modules = NULL;
|
||||
*num_ptl_modules = 0;
|
||||
|
||||
*allow_multi_user_threads = true;
|
||||
@ -225,83 +229,83 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
||||
mca_ptl_ib_component.ib_num_ptl_modules,
|
||||
mca_ptl_ib_component.ib_max_ptl_modules);
|
||||
|
||||
ptl_ib = (mca_ptl_ib_module_t*) malloc(sizeof(mca_ptl_ib_module_t) *
|
||||
ib_modules = (mca_ptl_ib_module_t*) malloc(sizeof(mca_ptl_ib_module_t) *
|
||||
mca_ptl_ib_component.ib_num_ptl_modules);
|
||||
if(NULL == ptl_ib) {
|
||||
if(NULL == ib_modules) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Zero out the PTL struct memory region */
|
||||
memset((void*)ptl_ib, 0, sizeof(mca_ptl_ib_module_t) *
|
||||
memset((void*)ib_modules, 0, sizeof(mca_ptl_ib_module_t) *
|
||||
mca_ptl_ib_component.ib_num_ptl_modules);
|
||||
|
||||
/* Copy the function pointers to the IB ptls */
|
||||
for(i = 0; i< mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||
memcpy((void*)&ptl_ib[i],
|
||||
/* Copy the function pointers to the IB modules */
|
||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||
memcpy((void*)&ib_modules[i],
|
||||
&mca_ptl_ib_module,
|
||||
sizeof(mca_ptl_ib_module));
|
||||
}
|
||||
|
||||
D_PRINT("About to initialize IB ptls ...\n");
|
||||
D_PRINT("About to initialize IB modules ...\n");
|
||||
|
||||
/* For each ptl, do this */
|
||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||
|
||||
if(mca_ptl_ib_get_hca_id(i, &ptl_ib[i].hca_id)
|
||||
if(mca_ptl_ib_get_hca_id(i, &ib_modules[i].hca_id)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
D_PRINT("hca_id: %s\n", ptl_ib[i].hca_id);
|
||||
D_PRINT("hca_id: %s\n", ib_modules[i].hca_id);
|
||||
|
||||
if(mca_ptl_ib_get_hca_hndl(ptl_ib[i].hca_id, &ptl_ib[i].nic)
|
||||
if(mca_ptl_ib_get_hca_hndl(ib_modules[i].hca_id, &ib_modules[i].nic)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
D_PRINT("hca_hndl: %d\n", ptl_ib[i].nic);
|
||||
D_PRINT("hca_hndl: %d\n", ib_modules[i].nic);
|
||||
|
||||
/* Each HCA uses only port 1. Need to change
|
||||
* this so that each ptl can choose different
|
||||
* ports */
|
||||
|
||||
if(mca_ptl_ib_query_hca_prop(ptl_ib[i].nic, &ptl_ib[i].port)
|
||||
if(mca_ptl_ib_query_hca_prop(ib_modules[i].nic, &ib_modules[i].port)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
D_PRINT("LID: %d\n", ptl_ib[i].port.lid);
|
||||
D_PRINT("LID: %d\n", ib_modules[i].port.lid);
|
||||
|
||||
if(mca_ptl_ib_alloc_pd(ptl_ib[i].nic, &ptl_ib[i].ptag)
|
||||
if(mca_ptl_ib_alloc_pd(ib_modules[i].nic, &ib_modules[i].ptag)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
D_PRINT("Protection Domain: %d\n", (int)ptl_ib[i].ptag);
|
||||
D_PRINT("Protection Domain: %d\n", (int)ib_modules[i].ptag);
|
||||
|
||||
if(mca_ptl_ib_create_cq(ptl_ib[i].nic, &ptl_ib[i].cq_hndl)
|
||||
if(mca_ptl_ib_create_cq(ib_modules[i].nic, &ib_modules[i].cq_hndl)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
D_PRINT("CQ handle: %d\n", (int)ptl_ib[i].cq_hndl);
|
||||
D_PRINT("CQ handle: %d\n", (int)ib_modules[i].cq_hndl);
|
||||
|
||||
if(mca_ptl_ib_ud_cq_init(ptl_ib[i].nic, &ptl_ib[i].ud_scq_hndl,
|
||||
&ptl_ib[i].ud_rcq_hndl)
|
||||
if(mca_ptl_ib_ud_cq_init(ib_modules[i].nic, &ib_modules[i].ud_scq_hndl,
|
||||
&ib_modules[i].ud_rcq_hndl)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(mca_ptl_ib_ud_qp_init(ptl_ib[i].nic, ptl_ib[i].ud_rcq_hndl,
|
||||
ptl_ib[i].ud_scq_hndl, ptl_ib[i].ptag,
|
||||
ptl_ib[i].ud_qp_hndl, ptl_ib[i].ud_qp_prop)
|
||||
if(mca_ptl_ib_ud_qp_init(ib_modules[i].nic, ib_modules[i].ud_rcq_hndl,
|
||||
ib_modules[i].ud_scq_hndl, ib_modules[i].ptag,
|
||||
&ib_modules[i].ud_qp_hndl, &ib_modules[i].ud_qp_prop)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Attach asynchronous handler */
|
||||
if(mca_ptl_ib_set_async_handler(ptl_ib[i].nic,
|
||||
ptl_ib[i].async_handler)
|
||||
if(mca_ptl_ib_set_async_handler(ib_modules[i].nic,
|
||||
&ib_modules[i].async_handler)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
@ -311,34 +315,36 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
||||
* 1. register
|
||||
* 2. fill up descriptors
|
||||
*/
|
||||
if(mca_ptl_ib_prep_ud_bufs(ptl_ib[i].nic, ptl_ib[i].ud_buf)
|
||||
ib_modules[i].ud_buf = NULL;
|
||||
|
||||
if(mca_ptl_ib_prep_ud_bufs(ib_modules[i].nic, &ib_modules[i].ud_buf)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Post the UD recv descriptors */
|
||||
if(mca_ptl_ib_post_ud_recv(ptl_ib[i].nic, ptl_ib[i].ud_qp_hndl,
|
||||
ptl_ib[i].ud_buf)
|
||||
if(mca_ptl_ib_post_ud_recv(ib_modules[i].nic, ib_modules[i].ud_qp_hndl,
|
||||
ib_modules[i].ud_buf)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(mca_ptl_ib_get_comp_ev_hndl(&ptl_ib[i].ud_comp_ev_handler)
|
||||
if(mca_ptl_ib_get_comp_ev_hndl(&ib_modules[i].ud_comp_ev_handler)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Set the completion event handler for the UD recv queue */
|
||||
if(mca_ptl_ib_set_comp_ev_hndl(ptl_ib[i].nic,
|
||||
ptl_ib[i].ud_rcq_hndl,
|
||||
ptl_ib[i].ud_comp_ev_handler,
|
||||
(void*)NULL, &ptl_ib[i].ud_comp_ev_hndl)
|
||||
if(mca_ptl_ib_set_comp_ev_hndl(ib_modules[i].nic,
|
||||
ib_modules[i].ud_rcq_hndl,
|
||||
ib_modules[i].ud_comp_ev_handler,
|
||||
(void*)NULL, &ib_modules[i].ud_comp_ev_hndl)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Request for interrupts on the UD recv queue */
|
||||
if(mca_ptl_ib_req_comp_notif(ptl_ib[i].nic, ptl_ib[i].ud_rcq_hndl)
|
||||
if(mca_ptl_ib_req_comp_notif(ib_modules[i].nic, ib_modules[i].ud_rcq_hndl)
|
||||
!= OMPI_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
@ -354,7 +360,7 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
||||
|
||||
/* Set the pointers for all IB ptls */
|
||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||
mca_ptl_ib_component.ib_ptl_modules[i] = &ptl_ib[i];
|
||||
mca_ptl_ib_component.ib_ptl_modules[i] = &ib_modules[i];
|
||||
}
|
||||
|
||||
if(mca_ptl_ib_component_send() != OMPI_SUCCESS) {
|
||||
@ -362,19 +368,19 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
||||
}
|
||||
|
||||
/* Allocate list of MCA ptl pointers */
|
||||
ptls = (mca_ptl_base_module_t**) malloc(mca_ptl_ib_component.ib_num_ptl_modules *
|
||||
modules = (mca_ptl_base_module_t**) malloc(mca_ptl_ib_component.ib_num_ptl_modules *
|
||||
sizeof(mca_ptl_base_module_t*));
|
||||
if(NULL == ptls) {
|
||||
if(NULL == modules) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(ptls, mca_ptl_ib_component.ib_ptl_modules,
|
||||
memcpy(modules, mca_ptl_ib_component.ib_ptl_modules,
|
||||
mca_ptl_ib_component.ib_num_ptl_modules *
|
||||
sizeof(mca_ptl_ib_module_t*));
|
||||
|
||||
*num_ptl_modules = mca_ptl_ib_component.ib_num_ptl_modules;
|
||||
|
||||
return ptls;
|
||||
return modules;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -45,7 +45,15 @@ static void async_event_handler(VAPI_hca_hndl_t hca_hndl,
|
||||
static void ud_completion_handler(VAPI_hca_hndl_t nic,
|
||||
VAPI_cq_hndl_t cq_hndl, void* priv_data)
|
||||
{
|
||||
VAPI_ret_t ret;
|
||||
|
||||
D_PRINT("Got interrupt!!\n");
|
||||
|
||||
ret = VAPI_req_comp_notif(nic, cq_hndl, VAPI_NEXT_COMP);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
MCA_PTL_IB_VAPI_RET(ret, "VAPI_req_comp_notif");
|
||||
}
|
||||
}
|
||||
|
||||
int mca_ptl_ib_ud_cq_init(VAPI_hca_hndl_t nic,
|
||||
@ -89,8 +97,8 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
VAPI_cq_hndl_t ud_rcq_hndl,
|
||||
VAPI_cq_hndl_t ud_scq_hndl,
|
||||
VAPI_pd_hndl_t ptag,
|
||||
VAPI_qp_hndl_t ud_qp_hndl,
|
||||
VAPI_qp_prop_t ud_qp_prop)
|
||||
VAPI_qp_hndl_t* ud_qp_hndl,
|
||||
VAPI_qp_prop_t* ud_qp_prop)
|
||||
{
|
||||
VAPI_qp_init_attr_t qp_init_attr;
|
||||
VAPI_qp_attr_t qp_attr;
|
||||
@ -119,7 +127,7 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
qp_init_attr.ts_type = VAPI_TS_UD;
|
||||
|
||||
ret = VAPI_create_qp(nic, &qp_init_attr,
|
||||
&ud_qp_hndl, &ud_qp_prop);
|
||||
ud_qp_hndl, ud_qp_prop);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
MCA_PTL_IB_VAPI_RET(ret, "VAPI_create_qp");
|
||||
@ -127,8 +135,8 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
}
|
||||
|
||||
D_PRINT("UD QP[%d] created ..hndl=%d\n",
|
||||
ud_qp_prop.qp_num,
|
||||
(int)ud_qp_hndl);
|
||||
ud_qp_prop->qp_num,
|
||||
(int)*ud_qp_hndl);
|
||||
|
||||
/* Modifying QP to INIT */
|
||||
QP_ATTR_MASK_CLR_ALL(qp_attr_mask);
|
||||
@ -142,7 +150,7 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_QKEY);
|
||||
|
||||
ret = VAPI_modify_qp(nic,
|
||||
ud_qp_hndl, &qp_attr,
|
||||
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||
&qp_attr_mask, &qp_cap);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
@ -160,7 +168,7 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_QP_STATE);
|
||||
|
||||
ret = VAPI_modify_qp(nic,
|
||||
ud_qp_hndl, &qp_attr,
|
||||
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||
&qp_attr_mask, &qp_cap);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
@ -180,7 +188,7 @@ int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t nic,
|
||||
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_SQ_PSN);
|
||||
|
||||
ret = VAPI_modify_qp(nic,
|
||||
ud_qp_hndl, &qp_attr,
|
||||
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||
&qp_attr_mask, &qp_cap);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
@ -218,13 +226,17 @@ int mca_ptl_ib_get_num_hcas(uint32_t* num_hcas)
|
||||
|
||||
int mca_ptl_ib_get_hca_id(int num, VAPI_hca_id_t* hca_id)
|
||||
{
|
||||
int num_hcas;
|
||||
uint32_t num_hcas;
|
||||
VAPI_ret_t ret;
|
||||
VAPI_hca_id_t* hca_ids = NULL;
|
||||
|
||||
hca_ids = (VAPI_hca_id_t*) malloc(mca_ptl_ib_component.ib_num_hcas *
|
||||
sizeof(VAPI_hca_id_t));
|
||||
|
||||
if(NULL == hca_ids) {
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Now get the hca_id from underlying VAPI layer */
|
||||
ret = EVAPI_list_hcas(mca_ptl_ib_component.ib_num_hcas,
|
||||
&num_hcas, hca_ids);
|
||||
@ -299,7 +311,7 @@ int mca_ptl_ib_alloc_pd(VAPI_hca_hndl_t nic,
|
||||
int mca_ptl_ib_create_cq(VAPI_hca_hndl_t nic,
|
||||
VAPI_cq_hndl_t* cq_hndl)
|
||||
{
|
||||
int act_num_cqe = 0;
|
||||
uint32_t act_num_cqe = 0;
|
||||
VAPI_ret_t ret;
|
||||
|
||||
ret = VAPI_create_cq(nic, DEFAULT_CQ_SIZE,
|
||||
@ -314,12 +326,12 @@ int mca_ptl_ib_create_cq(VAPI_hca_hndl_t nic,
|
||||
}
|
||||
|
||||
int mca_ptl_ib_set_async_handler(VAPI_hca_hndl_t nic,
|
||||
EVAPI_async_handler_hndl_t async_handler)
|
||||
EVAPI_async_handler_hndl_t *async_handler)
|
||||
{
|
||||
VAPI_ret_t ret;
|
||||
|
||||
ret = EVAPI_set_async_event_handler(nic,
|
||||
async_event_handler, 0, &async_handler);
|
||||
async_event_handler, 0, async_handler);
|
||||
|
||||
if(VAPI_OK != ret) {
|
||||
MCA_PTL_IB_VAPI_RET(ret, "EVAPI_set_async_event_handler");
|
||||
@ -330,15 +342,14 @@ int mca_ptl_ib_set_async_handler(VAPI_hca_hndl_t nic,
|
||||
}
|
||||
|
||||
int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t nic,
|
||||
mca_ptl_ib_ud_buf_t* ud_buf)
|
||||
mca_ptl_ib_ud_buf_t** ud_buf_ptr)
|
||||
{
|
||||
int size, len;
|
||||
int i, num_ud_bufs;
|
||||
vapi_descriptor_t* desc;
|
||||
mca_ptl_ib_ud_buf_data_t* buf_data;
|
||||
vapi_memhandle_t* memhandle;
|
||||
|
||||
ud_buf = NULL;
|
||||
mca_ptl_ib_ud_buf_t* ud_buf;
|
||||
|
||||
num_ud_bufs = MAX_UD_PREPOST_DEPTH;
|
||||
|
||||
@ -346,11 +357,14 @@ int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t nic,
|
||||
|
||||
len = sizeof(mca_ptl_ib_ud_buf_data_t);
|
||||
|
||||
ud_buf = (mca_ptl_ib_ud_buf_t*) malloc(size);
|
||||
if(NULL == ud_buf) {
|
||||
return OMPI_ERROR;
|
||||
(mca_ptl_ib_ud_buf_t*)*ud_buf_ptr = (mca_ptl_ib_ud_buf_t*) malloc(size);
|
||||
|
||||
if(NULL == *ud_buf_ptr) {
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
ud_buf = (mca_ptl_ib_ud_buf_t*)*ud_buf_ptr;
|
||||
|
||||
/* Walk through the list of UD bufs */
|
||||
for(i = 0; i < num_ud_bufs; i++) {
|
||||
desc = &ud_buf[i].desc;
|
||||
@ -359,7 +373,7 @@ int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t nic,
|
||||
|
||||
buf_data = (mca_ptl_ib_ud_buf_data_t*) malloc(len);
|
||||
if(NULL == buf_data) {
|
||||
return OMPI_ERROR;
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
if(mca_ptl_ib_register_mem(nic, buf_data, len, memhandle)
|
||||
@ -369,7 +383,7 @@ int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t nic,
|
||||
|
||||
desc->rr.comp_type = VAPI_SIGNALED;
|
||||
desc->rr.opcode = VAPI_RECEIVE;
|
||||
desc->rr.id = (VAPI_virt_addr_t) &ud_buf[i];
|
||||
desc->rr.id = (VAPI_virt_addr_t) (unsigned int) &ud_buf[i];
|
||||
desc->rr.sg_lst_len = 1;
|
||||
desc->rr.sg_lst_p = &(desc->sg_entry);
|
||||
desc->sg_entry.len = len;
|
||||
@ -457,6 +471,9 @@ int mca_ptl_ib_set_comp_ev_hndl(VAPI_hca_hndl_t nic,
|
||||
MCA_PTL_IB_VAPI_RET(ret, "EVAPI_set_comp_eventh");
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
D_PRINT("Completion hander: %p, Handle = %d\n",
|
||||
handler, (int)*handler_hndl);
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
@ -479,5 +496,7 @@ int mca_ptl_ib_get_comp_ev_hndl(VAPI_completion_event_handler_t* handler_ptr)
|
||||
{
|
||||
*handler_ptr = ud_completion_handler;
|
||||
|
||||
D_PRINT("UD Completion Event Handler = %p\n", ud_completion_handler);
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
@ -45,8 +45,8 @@ typedef struct mca_ptl_ib_ud_buf_t mca_ptl_ib_ud_buf_t;
|
||||
int mca_ptl_ib_ud_cq_init(VAPI_hca_hndl_t, VAPI_cq_hndl_t*,
|
||||
VAPI_cq_hndl_t*);
|
||||
int mca_ptl_ib_ud_qp_init(VAPI_hca_hndl_t, VAPI_cq_hndl_t,
|
||||
VAPI_cq_hndl_t, VAPI_pd_hndl_t, VAPI_qp_hndl_t,
|
||||
VAPI_qp_prop_t);
|
||||
VAPI_cq_hndl_t, VAPI_pd_hndl_t, VAPI_qp_hndl_t*,
|
||||
VAPI_qp_prop_t*);
|
||||
int mca_ptl_ib_get_num_hcas(uint32_t*);
|
||||
int mca_ptl_ib_get_hca_id(int, VAPI_hca_id_t*);
|
||||
int mca_ptl_ib_get_hca_hndl(VAPI_hca_id_t, VAPI_hca_hndl_t*);
|
||||
@ -54,10 +54,10 @@ int mca_ptl_ib_query_hca_prop(VAPI_hca_hndl_t, VAPI_hca_port_t*);
|
||||
int mca_ptl_ib_alloc_pd(VAPI_hca_hndl_t, VAPI_pd_hndl_t*);
|
||||
int mca_ptl_ib_create_cq(VAPI_hca_hndl_t, VAPI_cq_hndl_t*);
|
||||
int mca_ptl_ib_set_async_handler(VAPI_hca_hndl_t,
|
||||
EVAPI_async_handler_hndl_t);
|
||||
EVAPI_async_handler_hndl_t*);
|
||||
int mca_ptl_ib_post_ud_recv(VAPI_hca_hndl_t, VAPI_qp_hndl_t,
|
||||
mca_ptl_ib_ud_buf_t*);
|
||||
int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t, mca_ptl_ib_ud_buf_t*);
|
||||
int mca_ptl_ib_prep_ud_bufs(VAPI_hca_hndl_t, mca_ptl_ib_ud_buf_t**);
|
||||
int mca_ptl_ib_register_mem(VAPI_hca_hndl_t, void*, int,
|
||||
vapi_memhandle_t*);
|
||||
int mca_ptl_ib_set_comp_ev_hndl(VAPI_hca_hndl_t, VAPI_cq_hndl_t,
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user