ompi/request: Add ompi_request_persistent_noop_create
Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
Этот коммит содержится в:
родитель
9a63dacf1c
Коммит
e72f510daf
@ -15,6 +15,7 @@
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -74,16 +75,8 @@ int MPI_Bsend_init(const void *buf, int count, MPI_Datatype type,
|
||||
}
|
||||
|
||||
if (MPI_PROC_NULL == dest) {
|
||||
*request = OBJ_NEW(ompi_request_t);
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
(*request)->req_type = OMPI_REQUEST_NOOP;
|
||||
(*request)->req_status = ompi_request_empty.req_status;
|
||||
(*request)->req_complete = REQUEST_COMPLETED;
|
||||
(*request)->req_state = OMPI_REQUEST_INACTIVE;
|
||||
(*request)->req_persistent = true;
|
||||
(*request)->req_free = ompi_request_persistent_proc_null_free;
|
||||
return MPI_SUCCESS;
|
||||
rc = ompi_request_persistent_noop_create(request);
|
||||
OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME);
|
||||
}
|
||||
|
||||
OPAL_CR_ENTER_LIBRARY();
|
||||
|
@ -12,6 +12,7 @@
|
||||
* Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -70,16 +71,8 @@ int MPI_Recv_init(void *buf, int count, MPI_Datatype type, int source,
|
||||
}
|
||||
|
||||
if (MPI_PROC_NULL == source) {
|
||||
*request = OBJ_NEW(ompi_request_t);
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
(*request)->req_type = OMPI_REQUEST_NOOP;
|
||||
(*request)->req_status = ompi_request_empty.req_status;
|
||||
(*request)->req_complete = REQUEST_COMPLETED;
|
||||
(*request)->req_state = OMPI_REQUEST_INACTIVE;
|
||||
(*request)->req_persistent = true;
|
||||
(*request)->req_free = ompi_request_persistent_proc_null_free;
|
||||
return MPI_SUCCESS;
|
||||
rc = ompi_request_persistent_noop_create(request);
|
||||
OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME);
|
||||
}
|
||||
|
||||
OPAL_CR_ENTER_LIBRARY();
|
||||
|
@ -15,6 +15,7 @@
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -75,16 +76,8 @@ int MPI_Rsend_init(const void *buf, int count, MPI_Datatype type,
|
||||
}
|
||||
|
||||
if (MPI_PROC_NULL == dest) {
|
||||
*request = OBJ_NEW(ompi_request_t);
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
(*request)->req_type = OMPI_REQUEST_NOOP;
|
||||
(*request)->req_status = ompi_request_empty.req_status;
|
||||
(*request)->req_complete = REQUEST_COMPLETED;
|
||||
(*request)->req_state = OMPI_REQUEST_INACTIVE;
|
||||
(*request)->req_persistent = true;
|
||||
(*request)->req_free = ompi_request_persistent_proc_null_free;
|
||||
return MPI_SUCCESS;
|
||||
rc = ompi_request_persistent_noop_create(request);
|
||||
OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME);
|
||||
}
|
||||
|
||||
OPAL_CR_ENTER_LIBRARY();
|
||||
|
@ -15,6 +15,7 @@
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -75,16 +76,8 @@ int MPI_Send_init(const void *buf, int count, MPI_Datatype type,
|
||||
}
|
||||
|
||||
if (MPI_PROC_NULL == dest) {
|
||||
*request = OBJ_NEW(ompi_request_t);
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
(*request)->req_type = OMPI_REQUEST_NOOP;
|
||||
(*request)->req_status = ompi_request_empty.req_status;
|
||||
(*request)->req_complete = REQUEST_COMPLETED;
|
||||
(*request)->req_state = OMPI_REQUEST_INACTIVE;
|
||||
(*request)->req_persistent = true;
|
||||
(*request)->req_free = ompi_request_persistent_proc_null_free;
|
||||
return MPI_SUCCESS;
|
||||
rc = ompi_request_persistent_noop_create(request);
|
||||
OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME);
|
||||
}
|
||||
|
||||
OPAL_CR_ENTER_LIBRARY();
|
||||
|
@ -15,6 +15,7 @@
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -75,16 +76,8 @@ int MPI_Ssend_init(const void *buf, int count, MPI_Datatype type,
|
||||
}
|
||||
|
||||
if (MPI_PROC_NULL == dest) {
|
||||
*request = OBJ_NEW(ompi_request_t);
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
(*request)->req_type = OMPI_REQUEST_NOOP;
|
||||
(*request)->req_status = ompi_request_empty.req_status;
|
||||
(*request)->req_complete = REQUEST_COMPLETED;
|
||||
(*request)->req_state = OMPI_REQUEST_INACTIVE;
|
||||
(*request)->req_persistent = true;
|
||||
(*request)->req_free = ompi_request_persistent_proc_null_free;
|
||||
return MPI_SUCCESS;
|
||||
rc = ompi_request_persistent_noop_create(request);
|
||||
OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME);
|
||||
}
|
||||
|
||||
OPAL_CR_ENTER_LIBRARY();
|
||||
|
@ -17,6 +17,7 @@
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -86,7 +87,7 @@ static int ompi_request_empty_free(ompi_request_t** request)
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
int ompi_request_persistent_proc_null_free(ompi_request_t** request)
|
||||
static int ompi_request_persistent_noop_free(ompi_request_t** request)
|
||||
{
|
||||
OMPI_REQUEST_FINI(*request);
|
||||
(*request)->req_state = OMPI_REQUEST_INVALID;
|
||||
@ -185,3 +186,26 @@ int ompi_request_finalize(void)
|
||||
OBJ_DESTRUCT( &ompi_request_f_to_c_table );
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int ompi_request_persistent_noop_create(ompi_request_t** request)
|
||||
{
|
||||
ompi_request_t *req;
|
||||
|
||||
req = OBJ_NEW(ompi_request_t);
|
||||
if (NULL == req) {
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Other fields were initialized by the constructor for
|
||||
ompi_request_t */
|
||||
req->req_type = OMPI_REQUEST_NOOP;
|
||||
req->req_status = ompi_request_empty.req_status;
|
||||
req->req_complete = REQUEST_COMPLETED;
|
||||
req->req_state = OMPI_REQUEST_INACTIVE;
|
||||
req->req_persistent = true;
|
||||
req->req_free = ompi_request_persistent_noop_free;
|
||||
|
||||
*request = req;
|
||||
return OMPI_SUCCESS;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
* Copyright (c) 2012 Oak Ridge National Labs. All rights reserved.
|
||||
* Copyright (c) 2015-2017 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -348,17 +349,16 @@ OMPI_DECLSPEC extern ompi_request_fns_t ompi_request_functions;
|
||||
*/
|
||||
int ompi_request_init(void);
|
||||
|
||||
/**
|
||||
* Free a persistent request to a MPI_PROC_NULL peer (there's no
|
||||
* freelist to put it back to, so we have to actually OBJ_RELEASE it).
|
||||
*/
|
||||
OMPI_DECLSPEC int ompi_request_persistent_proc_null_free(ompi_request_t **request);
|
||||
|
||||
/**
|
||||
* Shut down the MPI_Request subsystem; invoked during MPI_FINALIZE.
|
||||
*/
|
||||
int ompi_request_finalize(void);
|
||||
|
||||
/**
|
||||
* Create a persistent request that does nothing (e.g., to MPI_PROC_NULL).
|
||||
*/
|
||||
int ompi_request_persistent_noop_create(ompi_request_t **request);
|
||||
|
||||
/**
|
||||
* Cancel a pending request.
|
||||
*/
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user