mtl-portals4: Control that flowctl_idx is egal to REQ_FLOWCTL_TABLE_ID
and use OPAL_ATOMIC_CMPSET_32 to test and set flowctl_active flag to true
Этот коммит содержится в:
родитель
9807a6d585
Коммит
bd3b1cf7be
@ -70,6 +70,13 @@ ompi_mtl_portals4_flowctl_init(void)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ompi_mtl_portals4.flowctl_idx != REQ_FLOWCTL_TABLE_ID) {
|
||||||
|
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
|
||||||
|
"%s:%d: PtlPTAlloc did not allocate the requested PT: %d\n",
|
||||||
|
__FILE__, __LINE__, ompi_mtl_portals4.flowctl_idx);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
ret = PtlCTAlloc(ompi_mtl_portals4.ni_h,
|
ret = PtlCTAlloc(ompi_mtl_portals4.ni_h,
|
||||||
&ompi_mtl_portals4.flowctl.trigger_ct_h);
|
&ompi_mtl_portals4.flowctl.trigger_ct_h);
|
||||||
if (OPAL_UNLIKELY(PTL_OK != ret)) {
|
if (OPAL_UNLIKELY(PTL_OK != ret)) {
|
||||||
@ -291,9 +298,7 @@ ompi_mtl_portals4_flowctl_trigger(void)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (false == ompi_mtl_portals4.flowctl.flowctl_active) {
|
if (true == OPAL_ATOMIC_CMPSET_32(&ompi_mtl_portals4.flowctl.flowctl_active, false, true)) {
|
||||||
ompi_mtl_portals4.flowctl.flowctl_active = true;
|
|
||||||
|
|
||||||
/* send trigger to root */
|
/* send trigger to root */
|
||||||
ret = PtlPut(ompi_mtl_portals4.zero_md_h,
|
ret = PtlPut(ompi_mtl_portals4.zero_md_h,
|
||||||
0,
|
0,
|
||||||
|
@ -34,7 +34,7 @@ OBJ_CLASS_DECLARATION(ompi_mtl_portals4_pending_request_t);
|
|||||||
|
|
||||||
|
|
||||||
struct ompi_mtl_portals4_flowctl_t {
|
struct ompi_mtl_portals4_flowctl_t {
|
||||||
bool flowctl_active;
|
int32_t flowctl_active;
|
||||||
|
|
||||||
int32_t send_slots;
|
int32_t send_slots;
|
||||||
int32_t max_send_slots;
|
int32_t max_send_slots;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user