diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e63197b24..beefb51ed2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -178,6 +178,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 "") @@ -262,6 +263,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 33bfc82bcf..2cd1874b92 100644 --- a/src/ck-core/ck.C +++ b/src/ck-core/ck.C @@ -1728,7 +1728,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); @@ -1824,7 +1824,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); @@ -1998,7 +1998,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 @@ -2150,7 +2150,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 f669d7c7e4..6dab6da85f 100644 --- a/src/ck-core/ckarray.C +++ b/src/ck-core/ckarray.C @@ -1521,7 +1521,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) @@ -1582,7 +1582,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) 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