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);
|
D_PRINT("Adding %d procs\n", nprocs);
|
||||||
|
|
||||||
|
|
||||||
for(i = 0; i < nprocs; i++) {
|
for(i = 0; i < nprocs; i++) {
|
||||||
|
|
||||||
ompi_proc = ompi_procs[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);
|
ud_qp_addr = (mca_ptl_ib_ud_addr_t*) malloc(size);
|
||||||
|
|
||||||
if(NULL == ud_qp_addr) {
|
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++) {
|
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,
|
rc = mca_base_modex_send(&mca_ptl_ib_component.super.ptlm_version,
|
||||||
ud_qp_addr, size);
|
ud_qp_addr, size);
|
||||||
|
|
||||||
|
if(OMPI_SUCCESS != rc) {
|
||||||
|
D_PRINT("mca_base_modex_send didn't succeed : %d\n", rc);
|
||||||
|
}
|
||||||
|
|
||||||
free(ud_qp_addr);
|
free(ud_qp_addr);
|
||||||
|
|
||||||
return rc;
|
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 *allow_multi_user_threads,
|
||||||
bool *have_hidden_threads)
|
bool *have_hidden_threads)
|
||||||
{
|
{
|
||||||
mca_ptl_base_module_t **ptls;
|
mca_ptl_base_module_t **modules;
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
uint32_t num_hcas;
|
uint32_t num_hcas;
|
||||||
mca_ptl_ib_module_t* ptl_ib = NULL;
|
mca_ptl_ib_module_t* ib_modules = NULL;
|
||||||
*num_ptl_modules = 0;
|
*num_ptl_modules = 0;
|
||||||
|
|
||||||
*allow_multi_user_threads = true;
|
*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_num_ptl_modules,
|
||||||
mca_ptl_ib_component.ib_max_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);
|
mca_ptl_ib_component.ib_num_ptl_modules);
|
||||||
if(NULL == ptl_ib) {
|
if(NULL == ib_modules) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Zero out the PTL struct memory region */
|
/* 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);
|
mca_ptl_ib_component.ib_num_ptl_modules);
|
||||||
|
|
||||||
/* Copy the function pointers to the IB ptls */
|
/* Copy the function pointers to the IB modules */
|
||||||
for(i = 0; i< mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
||||||
memcpy((void*)&ptl_ib[i],
|
memcpy((void*)&ib_modules[i],
|
||||||
&mca_ptl_ib_module,
|
&mca_ptl_ib_module,
|
||||||
sizeof(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 each ptl, do this */
|
||||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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
|
/* Each HCA uses only port 1. Need to change
|
||||||
* this so that each ptl can choose different
|
* this so that each ptl can choose different
|
||||||
* ports */
|
* 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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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,
|
if(mca_ptl_ib_ud_cq_init(ib_modules[i].nic, &ib_modules[i].ud_scq_hndl,
|
||||||
&ptl_ib[i].ud_rcq_hndl)
|
&ib_modules[i].ud_rcq_hndl)
|
||||||
!= OMPI_SUCCESS) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mca_ptl_ib_ud_qp_init(ptl_ib[i].nic, ptl_ib[i].ud_rcq_hndl,
|
if(mca_ptl_ib_ud_qp_init(ib_modules[i].nic, ib_modules[i].ud_rcq_hndl,
|
||||||
ptl_ib[i].ud_scq_hndl, ptl_ib[i].ptag,
|
ib_modules[i].ud_scq_hndl, ib_modules[i].ptag,
|
||||||
ptl_ib[i].ud_qp_hndl, ptl_ib[i].ud_qp_prop)
|
&ib_modules[i].ud_qp_hndl, &ib_modules[i].ud_qp_prop)
|
||||||
!= OMPI_SUCCESS) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Attach asynchronous handler */
|
/* Attach asynchronous handler */
|
||||||
if(mca_ptl_ib_set_async_handler(ptl_ib[i].nic,
|
if(mca_ptl_ib_set_async_handler(ib_modules[i].nic,
|
||||||
ptl_ib[i].async_handler)
|
&ib_modules[i].async_handler)
|
||||||
!= OMPI_SUCCESS) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -311,34 +315,36 @@ mca_ptl_base_module_t** mca_ptl_ib_component_init(int *num_ptl_modules,
|
|||||||
* 1. register
|
* 1. register
|
||||||
* 2. fill up descriptors
|
* 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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Post the UD recv descriptors */
|
/* Post the UD recv descriptors */
|
||||||
if(mca_ptl_ib_post_ud_recv(ptl_ib[i].nic, ptl_ib[i].ud_qp_hndl,
|
if(mca_ptl_ib_post_ud_recv(ib_modules[i].nic, ib_modules[i].ud_qp_hndl,
|
||||||
ptl_ib[i].ud_buf)
|
ib_modules[i].ud_buf)
|
||||||
!= OMPI_SUCCESS) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the completion event handler for the UD recv queue */
|
/* Set the completion event handler for the UD recv queue */
|
||||||
if(mca_ptl_ib_set_comp_ev_hndl(ptl_ib[i].nic,
|
if(mca_ptl_ib_set_comp_ev_hndl(ib_modules[i].nic,
|
||||||
ptl_ib[i].ud_rcq_hndl,
|
ib_modules[i].ud_rcq_hndl,
|
||||||
ptl_ib[i].ud_comp_ev_handler,
|
ib_modules[i].ud_comp_ev_handler,
|
||||||
(void*)NULL, &ptl_ib[i].ud_comp_ev_hndl)
|
(void*)NULL, &ib_modules[i].ud_comp_ev_hndl)
|
||||||
!= OMPI_SUCCESS) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Request for interrupts on the UD recv queue */
|
/* 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) {
|
!= OMPI_SUCCESS) {
|
||||||
return NULL;
|
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 */
|
/* Set the pointers for all IB ptls */
|
||||||
for(i = 0; i < mca_ptl_ib_component.ib_num_ptl_modules; i++) {
|
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) {
|
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 */
|
/* 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*));
|
sizeof(mca_ptl_base_module_t*));
|
||||||
if(NULL == ptls) {
|
if(NULL == modules) {
|
||||||
return NULL;
|
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 *
|
mca_ptl_ib_component.ib_num_ptl_modules *
|
||||||
sizeof(mca_ptl_ib_module_t*));
|
sizeof(mca_ptl_ib_module_t*));
|
||||||
|
|
||||||
*num_ptl_modules = mca_ptl_ib_component.ib_num_ptl_modules;
|
*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,
|
static void ud_completion_handler(VAPI_hca_hndl_t nic,
|
||||||
VAPI_cq_hndl_t cq_hndl, void* priv_data)
|
VAPI_cq_hndl_t cq_hndl, void* priv_data)
|
||||||
{
|
{
|
||||||
|
VAPI_ret_t ret;
|
||||||
|
|
||||||
D_PRINT("Got interrupt!!\n");
|
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,
|
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_rcq_hndl,
|
||||||
VAPI_cq_hndl_t ud_scq_hndl,
|
VAPI_cq_hndl_t ud_scq_hndl,
|
||||||
VAPI_pd_hndl_t ptag,
|
VAPI_pd_hndl_t ptag,
|
||||||
VAPI_qp_hndl_t ud_qp_hndl,
|
VAPI_qp_hndl_t* ud_qp_hndl,
|
||||||
VAPI_qp_prop_t ud_qp_prop)
|
VAPI_qp_prop_t* ud_qp_prop)
|
||||||
{
|
{
|
||||||
VAPI_qp_init_attr_t qp_init_attr;
|
VAPI_qp_init_attr_t qp_init_attr;
|
||||||
VAPI_qp_attr_t qp_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;
|
qp_init_attr.ts_type = VAPI_TS_UD;
|
||||||
|
|
||||||
ret = VAPI_create_qp(nic, &qp_init_attr,
|
ret = VAPI_create_qp(nic, &qp_init_attr,
|
||||||
&ud_qp_hndl, &ud_qp_prop);
|
ud_qp_hndl, ud_qp_prop);
|
||||||
|
|
||||||
if(VAPI_OK != ret) {
|
if(VAPI_OK != ret) {
|
||||||
MCA_PTL_IB_VAPI_RET(ret, "VAPI_create_qp");
|
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",
|
D_PRINT("UD QP[%d] created ..hndl=%d\n",
|
||||||
ud_qp_prop.qp_num,
|
ud_qp_prop->qp_num,
|
||||||
(int)ud_qp_hndl);
|
(int)*ud_qp_hndl);
|
||||||
|
|
||||||
/* Modifying QP to INIT */
|
/* Modifying QP to INIT */
|
||||||
QP_ATTR_MASK_CLR_ALL(qp_attr_mask);
|
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);
|
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_QKEY);
|
||||||
|
|
||||||
ret = VAPI_modify_qp(nic,
|
ret = VAPI_modify_qp(nic,
|
||||||
ud_qp_hndl, &qp_attr,
|
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||||
&qp_attr_mask, &qp_cap);
|
&qp_attr_mask, &qp_cap);
|
||||||
|
|
||||||
if(VAPI_OK != ret) {
|
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);
|
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_QP_STATE);
|
||||||
|
|
||||||
ret = VAPI_modify_qp(nic,
|
ret = VAPI_modify_qp(nic,
|
||||||
ud_qp_hndl, &qp_attr,
|
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||||
&qp_attr_mask, &qp_cap);
|
&qp_attr_mask, &qp_cap);
|
||||||
|
|
||||||
if(VAPI_OK != ret) {
|
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);
|
QP_ATTR_MASK_SET(qp_attr_mask,QP_ATTR_SQ_PSN);
|
||||||
|
|
||||||
ret = VAPI_modify_qp(nic,
|
ret = VAPI_modify_qp(nic,
|
||||||
ud_qp_hndl, &qp_attr,
|
(VAPI_qp_hndl_t)*ud_qp_hndl, &qp_attr,
|
||||||
&qp_attr_mask, &qp_cap);
|
&qp_attr_mask, &qp_cap);
|
||||||
|
|
||||||
if(VAPI_OK != ret) {
|
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 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_ret_t ret;
|
||||||
VAPI_hca_id_t* hca_ids = NULL;
|
VAPI_hca_id_t* hca_ids = NULL;
|
||||||
|
|
||||||
hca_ids = (VAPI_hca_id_t*) malloc(mca_ptl_ib_component.ib_num_hcas *
|
hca_ids = (VAPI_hca_id_t*) malloc(mca_ptl_ib_component.ib_num_hcas *
|
||||||
sizeof(VAPI_hca_id_t));
|
sizeof(VAPI_hca_id_t));
|
||||||
|
|
||||||
|
if(NULL == hca_ids) {
|
||||||
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Now get the hca_id from underlying VAPI layer */
|
/* Now get the hca_id from underlying VAPI layer */
|
||||||
ret = EVAPI_list_hcas(mca_ptl_ib_component.ib_num_hcas,
|
ret = EVAPI_list_hcas(mca_ptl_ib_component.ib_num_hcas,
|
||||||
&num_hcas, hca_ids);
|
&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,
|
int mca_ptl_ib_create_cq(VAPI_hca_hndl_t nic,
|
||||||
VAPI_cq_hndl_t* cq_hndl)
|
VAPI_cq_hndl_t* cq_hndl)
|
||||||
{
|
{
|
||||||
int act_num_cqe = 0;
|
uint32_t act_num_cqe = 0;
|
||||||
VAPI_ret_t ret;
|
VAPI_ret_t ret;
|
||||||
|
|
||||||
ret = VAPI_create_cq(nic, DEFAULT_CQ_SIZE,
|
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,
|
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;
|
VAPI_ret_t ret;
|
||||||
|
|
||||||
ret = EVAPI_set_async_event_handler(nic,
|
ret = EVAPI_set_async_event_handler(nic,
|
||||||
async_event_handler, 0, &async_handler);
|
async_event_handler, 0, async_handler);
|
||||||
|
|
||||||
if(VAPI_OK != ret) {
|
if(VAPI_OK != ret) {
|
||||||
MCA_PTL_IB_VAPI_RET(ret, "EVAPI_set_async_event_handler");
|
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,
|
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 size, len;
|
||||||
int i, num_ud_bufs;
|
int i, num_ud_bufs;
|
||||||
vapi_descriptor_t* desc;
|
vapi_descriptor_t* desc;
|
||||||
mca_ptl_ib_ud_buf_data_t* buf_data;
|
mca_ptl_ib_ud_buf_data_t* buf_data;
|
||||||
vapi_memhandle_t* memhandle;
|
vapi_memhandle_t* memhandle;
|
||||||
|
mca_ptl_ib_ud_buf_t* ud_buf;
|
||||||
ud_buf = NULL;
|
|
||||||
|
|
||||||
num_ud_bufs = MAX_UD_PREPOST_DEPTH;
|
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);
|
len = sizeof(mca_ptl_ib_ud_buf_data_t);
|
||||||
|
|
||||||
ud_buf = (mca_ptl_ib_ud_buf_t*) malloc(size);
|
(mca_ptl_ib_ud_buf_t*)*ud_buf_ptr = (mca_ptl_ib_ud_buf_t*) malloc(size);
|
||||||
if(NULL == ud_buf) {
|
|
||||||
return OMPI_ERROR;
|
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 */
|
/* Walk through the list of UD bufs */
|
||||||
for(i = 0; i < num_ud_bufs; i++) {
|
for(i = 0; i < num_ud_bufs; i++) {
|
||||||
desc = &ud_buf[i].desc;
|
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);
|
buf_data = (mca_ptl_ib_ud_buf_data_t*) malloc(len);
|
||||||
if(NULL == buf_data) {
|
if(NULL == buf_data) {
|
||||||
return OMPI_ERROR;
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mca_ptl_ib_register_mem(nic, buf_data, len, memhandle)
|
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.comp_type = VAPI_SIGNALED;
|
||||||
desc->rr.opcode = VAPI_RECEIVE;
|
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_len = 1;
|
||||||
desc->rr.sg_lst_p = &(desc->sg_entry);
|
desc->rr.sg_lst_p = &(desc->sg_entry);
|
||||||
desc->sg_entry.len = len;
|
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");
|
MCA_PTL_IB_VAPI_RET(ret, "EVAPI_set_comp_eventh");
|
||||||
return OMPI_ERROR;
|
return OMPI_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
D_PRINT("Completion hander: %p, Handle = %d\n",
|
||||||
|
handler, (int)*handler_hndl);
|
||||||
|
|
||||||
return OMPI_SUCCESS;
|
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;
|
*handler_ptr = ud_completion_handler;
|
||||||
|
|
||||||
|
D_PRINT("UD Completion Event Handler = %p\n", ud_completion_handler);
|
||||||
|
|
||||||
return OMPI_SUCCESS;
|
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*,
|
int mca_ptl_ib_ud_cq_init(VAPI_hca_hndl_t, VAPI_cq_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,
|
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_cq_hndl_t, VAPI_pd_hndl_t, VAPI_qp_hndl_t*,
|
||||||
VAPI_qp_prop_t);
|
VAPI_qp_prop_t*);
|
||||||
int mca_ptl_ib_get_num_hcas(uint32_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_id(int, VAPI_hca_id_t*);
|
||||||
int mca_ptl_ib_get_hca_hndl(VAPI_hca_id_t, VAPI_hca_hndl_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_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_create_cq(VAPI_hca_hndl_t, VAPI_cq_hndl_t*);
|
||||||
int mca_ptl_ib_set_async_handler(VAPI_hca_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,
|
int mca_ptl_ib_post_ud_recv(VAPI_hca_hndl_t, VAPI_qp_hndl_t,
|
||||||
mca_ptl_ib_ud_buf_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,
|
int mca_ptl_ib_register_mem(VAPI_hca_hndl_t, void*, int,
|
||||||
vapi_memhandle_t*);
|
vapi_memhandle_t*);
|
||||||
int mca_ptl_ib_set_comp_ev_hndl(VAPI_hca_hndl_t, VAPI_cq_hndl_t,
|
int mca_ptl_ib_set_comp_ev_hndl(VAPI_hca_hndl_t, VAPI_cq_hndl_t,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user