1
1
- 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.
Этот коммит содержится в:
Jelena Pjesivac-Grbovic 2007-01-17 21:29:13 +00:00
родитель 95c0a17b9a
Коммит 85192c01b0
2 изменённых файлов: 50 добавлений и 12 удалений

Просмотреть файл

@ -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