From 68cfbc276f78505c9a2ec0ee5cdb76d216c6da7b Mon Sep 17 00:00:00 2001 From: Zane Fink Date: Tue, 18 Apr 2023 16:23:14 -0500 Subject: [PATCH 1/2] by default, disable message priorities --- CMakeLists.txt | 8 ++++++++ src/ck-core/charm.h | 6 ++++++ src/ck-core/ck.C | 8 ++++---- src/ck-core/ckarray.C | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa57fb912b..88c8a94636 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -167,6 +167,7 @@ option(ZLIB "Enable zlib support" ON) option(AMPI_MPICH_TESTS "Enable mpich tests for AMPI" OFF) option(DRONE_MODE "Enable drone mode" OFF) option(TASK_QUEUE "Enable task queue" OFF) +option(PRIORITIES_ENABLED "Enable entry method priorities" OFF) if(TRACING STREQUAL "") @@ -251,6 +252,13 @@ else() set(CMK_TASKQUEUE 0) endif() +if(${PRIORITIES_ENABLED}) + set(CK_ENABLE_MSG_PRIORITIES 1) +else() + set(CK_ENABLE_MSG_PRIORITIES 0) +endif() + + if(${AMPI_MPICH_TESTS}) add_definitions(-DAMPI_ERRHANDLER_RETURN=1) diff --git a/src/ck-core/charm.h b/src/ck-core/charm.h index cee65d539a..42c9c9f3b2 100644 --- a/src/ck-core/charm.h +++ b/src/ck-core/charm.h @@ -381,6 +381,12 @@ typedef enum { #define CK_MSG_EXPEDITED 0x4 #define CK_MSG_LB_NOTRACE 0x8 /* load balancer doesn't trace */ +#if CK_ENABLE_MSG_PRIORITIES +#define PRIORITIES_DISABLED 0 +#else +#define PRIORITIES_DISABLED 1 +#endif // CK_ENABLE_MSG_PRIORITIES + #ifdef __cplusplus #define CK_MSGOPTIONAL =0 #else diff --git a/src/ck-core/ck.C b/src/ck-core/ck.C index 346c985211..44b6ee0736 100644 --- a/src/ck-core/ck.C +++ b/src/ck-core/ck.C @@ -1735,7 +1735,7 @@ void CkSendMsg(int entryIdx, void *msg,const CkChareID *pCid, int opts) _TRACE_CREATION_1(env); if (destPE!=-1) { CpvAccess(_qd)->create(); - if (opts & CK_MSG_SKIP_OR_IMM) + if (PRIORITIES_DISABLED || opts & CK_MSG_SKIP_OR_IMM) _noCldEnqueue(destPE, env); else _CldEnqueue(destPE, env, _infoIdx); @@ -1831,7 +1831,7 @@ static inline void _sendMsgBranch(int eIdx, void *msg, CkGroupID gID, _TRACE_ONLY(numPes = (pe==CLD_BROADCAST_ALL?CkNumPes():1)); _TRACE_CREATION_N(env, numPes); - if (opts & CK_MSG_SKIP_OR_IMM) + if (PRIORITIES_DISABLED || opts & CK_MSG_SKIP_OR_IMM) _noCldEnqueue(pe, env); else _skipCldEnqueue(pe, env, _infoIdx); @@ -2005,7 +2005,7 @@ static inline void _sendMsgNodeBranch(int eIdx, void *msg, CkGroupID gID, } numPes = (node==CLD_BROADCAST_ALL?CkNumNodes():1); _TRACE_CREATION_N(env, numPes); - if (opts & CK_MSG_SKIP_OR_IMM) { + if (PRIORITIES_DISABLED || opts & CK_MSG_SKIP_OR_IMM) { _noCldNodeEnqueue(node, env); } else @@ -2157,7 +2157,7 @@ void CkArrayManagerDeliver(int pe,void *msg, int opts) { _prepareOutgoingArrayMsg(env,ForArrayEltMsg); if (opts & CK_MSG_IMMEDIATE) CmiBecomeImmediate(env); - if (opts & CK_MSG_SKIP_OR_IMM) + if (PRIORITIES_DISABLED || opts & CK_MSG_SKIP_OR_IMM) _noCldEnqueue(pe, env); else _skipCldEnqueue(pe, env, _infoIdx); diff --git a/src/ck-core/ckarray.C b/src/ck-core/ckarray.C index cfe58b2c88..7659f4527f 100644 --- a/src/ck-core/ckarray.C +++ b/src/ck-core/ckarray.C @@ -1520,7 +1520,7 @@ void CProxy_ArrayBase::ckBroadcast(CkArrayMessage* msg, int ep, int opts) const // Broadcast message via serializer node _TRACE_CREATION_DETAILED(UsrToEnv(msg), ep); static constexpr int serializer = 0; - int skipsched = opts & CK_MSG_EXPEDITED; + int skipsched = PRIORITIES_DISABLED || (opts & CK_MSG_EXPEDITED); CProxy_CkArray ap(_aid); if (CkMyPe() != serializer) @@ -1581,7 +1581,7 @@ void CkArray::incrementBcastNoAndSendBack(int srcPe, MsgPointerWrapper w) void CkArray::sendZCBroadcast(MsgPointerWrapper w) { - int skipsched = w.opts & CK_MSG_EXPEDITED; + int skipsched = PRIORITIES_DISABLED || (w.opts & CK_MSG_EXPEDITED); int nokeep = _entryTable[w.ep]->noKeep; UsrToEnv(w.msg)->setGroupEpoch(w.epoch); if (skipsched && nokeep) From d007d8a8ce520349e05029b6d74e75701bf3dad2 Mon Sep 17 00:00:00 2001 From: Zane Fink Date: Wed, 3 May 2023 08:45:13 -0500 Subject: [PATCH 2/2] disable priotest when we don't have priorities --- tests/charm++/megatest/priolongtest.C | 4 ++-- tests/charm++/megatest/priotest.C | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/charm++/megatest/priolongtest.C b/tests/charm++/megatest/priolongtest.C index 793dc1f5c0..9878793bea 100644 --- a/tests/charm++/megatest/priolongtest.C +++ b/tests/charm++/megatest/priolongtest.C @@ -43,8 +43,8 @@ priolongtest_chare::recv(priolongtest_msg *m) megatest_finish(); } -#if ! CMK_RANDOMIZED_MSGQ -MEGATEST_REGISTER_TEST(priolongtest,"ebohm",1) +#if !defined(CMK_RANDOMIZED_MSGQ) && !defined(CK_ENABLE_MSG_PRIORITIES) +MEGATEST_REGISTER_TEST(priolongtest,"ebohm",1) #endif #include "priolongtest.def.h" diff --git a/tests/charm++/megatest/priotest.C b/tests/charm++/megatest/priotest.C index 86bede808f..aed6cf6c6e 100644 --- a/tests/charm++/megatest/priotest.C +++ b/tests/charm++/megatest/priotest.C @@ -30,7 +30,7 @@ priotest_chare::recv(priotest_msg *m) megatest_finish(); } -#if ! CMK_RANDOMIZED_MSGQ +#if !defined(CMK_RANDOMIZED_MSGQ) && !defined(CK_ENABLE_MSG_PRIORITIES) MEGATEST_REGISTER_TEST(priotest,"mlind",1) #endif