* Throttle the number of incoming receives so that we don't overrun our receive
event queue and lose receive messages. This commit was SVN r9006.
Этот коммит содержится в:
родитель
20d06e889e
Коммит
08747dcaf8
ompi/mca/btl/portals
@ -205,7 +205,7 @@ mca_btl_portals_component_open(void)
|
|||||||
&dummy);
|
&dummy);
|
||||||
mca_btl_portals_module.super.btl_bandwidth = dummy;
|
mca_btl_portals_module.super.btl_bandwidth = dummy;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
mca_btl_portals_module.super.btl_flags = MCA_BTL_FLAGS_RDMA | MCA_BTL_FLAGS_SEND_INPLACE;
|
mca_btl_portals_module.super.btl_flags = MCA_BTL_FLAGS_RDMA | MCA_BTL_FLAGS_SEND_INPLACE;
|
||||||
#else
|
#else
|
||||||
mca_btl_portals_module.super.btl_flags = MCA_BTL_FLAGS_RDMA;
|
mca_btl_portals_module.super.btl_flags = MCA_BTL_FLAGS_RDMA;
|
||||||
@ -472,7 +472,8 @@ mca_btl_portals_component_progress(void)
|
|||||||
OPAL_OUTPUT_VERBOSE((90, mca_btl_portals_component.portals_output,
|
OPAL_OUTPUT_VERBOSE((90, mca_btl_portals_component.portals_output,
|
||||||
"received send fragment %x", frag));
|
"received send fragment %x", frag));
|
||||||
|
|
||||||
if (ev.md.length - (ev.offset + ev.mlength) < ev.md.max_size) {
|
if (ev.md.length - (ev.offset + ev.mlength) < ev.md.max_size ||
|
||||||
|
ev.md.threshold == 0) {
|
||||||
/* the block is full. It's deactivated automagically, but we
|
/* the block is full. It's deactivated automagically, but we
|
||||||
can't start it up again until everyone is done with it.
|
can't start it up again until everyone is done with it.
|
||||||
The actual reactivation and all that will happen after the
|
The actual reactivation and all that will happen after the
|
||||||
|
@ -94,7 +94,10 @@ mca_btl_portals_activate_block(mca_btl_portals_recv_block_t *block)
|
|||||||
/* and the memory descriptor */
|
/* and the memory descriptor */
|
||||||
md.start = block->start;
|
md.start = block->start;
|
||||||
md.length = block->length;
|
md.length = block->length;
|
||||||
md.threshold = PTL_MD_THRESH_INF;
|
/* try to throttle incoming sends so that we don't overrun the incoming
|
||||||
|
queue size */
|
||||||
|
md.threshold = mca_btl_portals_module.portals_eq_sizes[OMPI_BTL_PORTALS_EQ] /
|
||||||
|
mca_btl_portals_module.portals_recv_mds_num;
|
||||||
md.max_size = block->btl->super.btl_max_send_size;
|
md.max_size = block->btl->super.btl_max_send_size;
|
||||||
md.options = PTL_MD_OP_PUT | PTL_MD_MAX_SIZE;
|
md.options = PTL_MD_OP_PUT | PTL_MD_MAX_SIZE;
|
||||||
md.user_ptr = block;
|
md.user_ptr = block;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user