int mca_pml_crcpw_recv( void *buf, size_t count, ompi_datatype_t *datatype, int src, int tag, struct ompi_communicator_t* comm, ompi_status_public_t* given_status) { int ret = OMPI_SUCCESS, actual_ret = OMPI_SUCCESS; ompi_status_public_t* status = NULL; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); if( given_status == NULL) { status = (ompi_status_public_t*)malloc(sizeof(ompi_status_public_t)); } else { status = given_status; } pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_recv(buf, count, datatype, src, tag, comm, status, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_DONE == pml_state->state) { goto CLEANUP; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (actual_ret = mca_pml_crcpw_module.wrapped_pml_module.pml_recv(buf, count, datatype, src, tag, comm, status) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_recv(buf, count, datatype, src, tag, comm, status, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( given_status == NULL) { free(status); } CLEANUP: PML_CRCP_STATE_RETURN(pml_state); opal_cr_stall_check = false; OPAL_CR_TEST_CHECKPOINT_READY(); return actual_ret; }
int mca_pml_crcpw_del_comm(ompi_communicator_t* comm) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; if( OPAL_UNLIKELY(NULL == ompi_crcp.pml_del_comm) ) { return mca_pml_crcpw_module.wrapped_pml_module.pml_del_comm(comm); } PML_CRCP_STATE_ALLOC(pml_state, ret); if( NULL == pml_state ) { return mca_pml_crcpw_module.wrapped_pml_module.pml_del_comm(comm); } pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_del_comm(comm, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_del_comm(comm) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_del_comm(comm, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_irecv( void *buf, size_t count, ompi_datatype_t *datatype, int src, int tag, struct ompi_communicator_t* comm, struct ompi_request_t **request ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_irecv(buf, count, datatype, src, tag, comm, request, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_DONE == pml_state->state) { goto CLEANUP; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_irecv(buf, count, datatype, src, tag, comm, request) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_irecv(buf, count, datatype, src, tag, comm, request, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } CLEANUP: PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_start( size_t count, ompi_request_t** requests ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_start(count, requests, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_DONE == pml_state->state) { goto CLEANUP; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_start(count, requests) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_start(count, requests, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } CLEANUP: PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_probe( int dst, int tag, struct ompi_communicator_t* comm, ompi_status_public_t* status ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_probe(dst, tag, comm, status, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_DONE == pml_state->state) { goto CLEANUP; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_probe(dst, tag, comm, status) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_probe(dst, tag, comm, status, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } CLEANUP: PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_progress(void) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; if( OPAL_LIKELY(NULL == ompi_crcp.pml_progress) ) { return mca_pml_crcpw_module.wrapped_pml_module.pml_progress(); } PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_progress(pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_progress() ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_progress(pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_send( void *buf, size_t count, ompi_datatype_t *datatype, int dst, int tag, mca_pml_base_send_mode_t mode, struct ompi_communicator_t* comm ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_send(buf, count, datatype, dst, tag, mode, comm, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_send(buf, count, datatype, dst, tag, mode, comm) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_send(buf, count, datatype, dst, tag, mode, comm, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); opal_cr_stall_check = false; OPAL_CR_TEST_CHECKPOINT_READY(); return OMPI_SUCCESS; }
int mca_pml_crcpw_ft_event(int state) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_ft_event(state, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state && NULL != mca_pml_crcpw_module.wrapped_pml_module.pml_ft_event) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_ft_event(state) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_ft_event(state, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_isend_init( void *buf, size_t count, ompi_datatype_t *datatype, int dst, int tag, mca_pml_base_send_mode_t mode, struct ompi_communicator_t* comm, struct ompi_request_t **request ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_isend_init(buf, count, datatype, dst, tag, mode, comm, request, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_isend_init(buf, count, datatype, dst, tag, mode, comm, request) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_isend_init(buf, count, datatype, dst, tag, mode, comm, request, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_dump( struct ompi_communicator_t* comm, int verbose ) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_dump(comm, verbose, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_dump(comm, verbose) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_dump(comm, verbose, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }
int mca_pml_crcpw_del_procs(ompi_proc_t** procs, size_t nprocs) { int ret; ompi_crcp_base_pml_state_t * pml_state = NULL; PML_CRCP_STATE_ALLOC(pml_state, ret); pml_state->wrapped_pml_component = &(mca_pml_crcpw_module.wrapped_pml_component); pml_state->wrapped_pml_module = &(mca_pml_crcpw_module.wrapped_pml_module); pml_state->state = OMPI_CRCP_PML_PRE; pml_state = ompi_crcp.pml_del_procs(procs, nprocs, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } if( OMPI_CRCP_PML_SKIP != pml_state->state) { if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_del_procs(procs, nprocs) ) ) { PML_CRCP_STATE_RETURN(pml_state); return ret; } } pml_state->state = OMPI_CRCP_PML_POST; pml_state = ompi_crcp.pml_del_procs(procs, nprocs, pml_state); if( OMPI_SUCCESS != pml_state->error_code) { ret = pml_state->error_code; PML_CRCP_STATE_RETURN(pml_state); return ret; } PML_CRCP_STATE_RETURN(pml_state); return OMPI_SUCCESS; }