Modifying util functionality:
- removing static qualification on ompi_coll_tuned_sendrecv - adding ompi_coll_tuned_isendrecv function which posts isend and irecv requests These changes are separate from but necessary for new algorithms I am working on. This commit was SVN r13161.
Этот коммит содержится в:
родитель
95c0a17b9a
Коммит
85192c01b0
@ -67,6 +67,24 @@ int ompi_coll_tuned_sendrecv_actual( void* sendbuf, int scount,
|
||||
return (err);
|
||||
}
|
||||
|
||||
inline int
|
||||
ompi_coll_tuned_sendrecv( void* sendbuf, int scount, ompi_datatype_t* sdatatype,
|
||||
int dest, int stag,
|
||||
void* recvbuf, int rcount, ompi_datatype_t* rdatatype,
|
||||
int source, int rtag,
|
||||
struct ompi_communicator_t* comm,
|
||||
ompi_status_public_t* status, int myid )
|
||||
{
|
||||
if ((dest == myid) && (source == myid)) {
|
||||
return (int) ompi_ddt_sndrcv(sendbuf, (int32_t) scount, sdatatype,
|
||||
recvbuf, (int32_t) rcount, rdatatype);
|
||||
}
|
||||
return ompi_coll_tuned_sendrecv_actual (sendbuf, scount, sdatatype,
|
||||
dest, stag,
|
||||
recvbuf, rcount, rdatatype,
|
||||
source, rtag, comm, status);
|
||||
}
|
||||
|
||||
/*
|
||||
* localcompleted version that makes sure the send has completed locally
|
||||
* Currently this is a sync call, but will change to locally completed
|
||||
@ -110,3 +128,25 @@ int ompi_coll_tuned_sendrecv_actual_localcompleted( void* sendbuf, int scount,
|
||||
OPAL_OUTPUT ((ompi_coll_tuned_stream, "%s:%d: Error %d occurred\n",__FILE__,line,err));
|
||||
return (err);
|
||||
}
|
||||
|
||||
inline int
|
||||
ompi_coll_tuned_isendrecv( void* sendbuf, int scount, ompi_datatype_t* sdtype,
|
||||
int dest, int stag, ompi_request_t** sreq,
|
||||
void* recvbuf, int rcount, ompi_datatype_t* rdtype,
|
||||
int source, int rtag, ompi_request_t** rreq,
|
||||
struct ompi_communicator_t* comm ) {
|
||||
int ret, line;
|
||||
|
||||
ret = MCA_PML_CALL(irecv(recvbuf, rcount, rdtype, source, rtag, comm, rreq));
|
||||
if (MPI_SUCCESS != ret) { line = __LINE__; goto error_handler; }
|
||||
|
||||
ret = MCA_PML_CALL(isend(sendbuf, scount, sdtype, dest, stag,
|
||||
MCA_PML_BASE_SEND_STANDARD, comm, sreq));
|
||||
if (MPI_SUCCESS != ret) { line = __LINE__; goto error_handler; }
|
||||
|
||||
return MPI_SUCCESS;
|
||||
error_handler:
|
||||
OPAL_OUTPUT((ompi_coll_tuned_stream, "%s:%d\tError occurred %d\n",
|
||||
__FILE__, line, ret));
|
||||
return ret;
|
||||
}
|
||||
|
@ -45,23 +45,13 @@ int ompi_coll_tuned_sendrecv_actual( void* sendbuf, int scount,
|
||||
|
||||
/* inline functions */
|
||||
|
||||
static inline int
|
||||
inline int
|
||||
ompi_coll_tuned_sendrecv( void* sendbuf, int scount, ompi_datatype_t* sdatatype,
|
||||
int dest, int stag,
|
||||
void* recvbuf, int rcount, ompi_datatype_t* rdatatype,
|
||||
int source, int rtag,
|
||||
struct ompi_communicator_t* comm,
|
||||
ompi_status_public_t* status, int myid )
|
||||
{
|
||||
if ((dest == myid) && (source == myid)) {
|
||||
return (int) ompi_ddt_sndrcv(sendbuf, (int32_t) scount, sdatatype,
|
||||
recvbuf, (int32_t) rcount, rdatatype);
|
||||
}
|
||||
return ompi_coll_tuned_sendrecv_actual (sendbuf, scount, sdatatype,
|
||||
dest, stag,
|
||||
recvbuf, rcount, rdatatype,
|
||||
source, rtag, comm, status);
|
||||
}
|
||||
ompi_status_public_t* status, int myid );
|
||||
|
||||
int
|
||||
ompi_coll_tuned_sendrecv_actual_localcompleted( void* sendbuf, int scount,
|
||||
@ -99,6 +89,14 @@ ompi_coll_tuned_sendrecv_localcompleted( void* sendbuf, int scount,
|
||||
status);
|
||||
}
|
||||
|
||||
/* inline functions */
|
||||
inline int
|
||||
ompi_coll_tuned_isendrecv( void* sendbuf, int scount, ompi_datatype_t* sdtype,
|
||||
int dest, int stag, ompi_request_t** sreq,
|
||||
void* recvbuf, int rcount, ompi_datatype_t* rdtype,
|
||||
int source, int rtag, ompi_request_t** rreq,
|
||||
struct ompi_communicator_t* comm );
|
||||
|
||||
#if defined(c_plusplus) || defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user