fbf341068a
the fragments that failed to be send, there is no need to replicate the same mechanism in the BTL. Force the SM BTL to empty all ack fragments in the component progress function. This commit was SVN r18724.
29 строки
1.6 KiB
C
29 строки
1.6 KiB
C
#ifndef MCA_BTL_SM_FIFO_H
|
|
#define MCA_BTL_SM_FIFO_H
|
|
|
|
#include "btl_sm.h"
|
|
#include "btl_sm_endpoint.h"
|
|
|
|
#define MCA_BTL_SM_FIFO_WRITE(endpoint_peer, my_smp_rank, \
|
|
peer_smp_rank, hdr, resend, rc) \
|
|
do { \
|
|
ompi_fifo_t* fifo; \
|
|
fifo=&(mca_btl_sm_component.fifo[peer_smp_rank][my_smp_rank]); \
|
|
\
|
|
/* thread lock */ \
|
|
if(opal_using_threads()) \
|
|
opal_atomic_lock(fifo->head_lock); \
|
|
/* post fragment */ \
|
|
if(OMPI_CB_ERROR == \
|
|
ompi_cb_fifo_write_to_head(hdr, &fifo->head->cb_fifo)) { \
|
|
rc = OMPI_ERR_RESOURCE_BUSY; \
|
|
} else { \
|
|
MCA_BTL_SM_SIGNAL_PEER(endpoint_peer); \
|
|
rc = OMPI_SUCCESS; \
|
|
} \
|
|
if(opal_using_threads()) \
|
|
opal_atomic_unlock(fifo->head_lock); \
|
|
} while(0)
|
|
|
|
#endif
|