add LrtsBeginIdle and LrtsStillIdle so that different machine layers can
authorYanhuaSun <sun51@illinois.edu>
Mon, 25 Mar 2013 02:03:55 +0000 (21:03 -0500)
committerYanhuaSun <sun51@illinois.edu>
Mon, 25 Mar 2013 02:03:55 +0000 (21:03 -0500)
handle idle events in its own way

src/arch/bluegenep/machine.c
src/arch/gemini_gni/machine.c
src/arch/mpi/machine.c
src/arch/pamilrts/machine.c
src/arch/util/machine-common-core.c
src/arch/util/machine-lrts.h

index 6a2f5f371eb0ba6b9cdd14523104ff388e1f344d..3d397e15721c7aa1d0bfc5217ca4f79228836bce 100644 (file)
@@ -326,7 +326,7 @@ static void MachinePostNonLocalForDCMF();
 /*######Beginning of functions related with Communication-Op functions ######*/
 
 /* Utility functions */
-static inline SMSG_LIST * smsg_allocate() {
+static INLINE_KEYWORD SMSG_LIST * smsg_allocate() {
     SMSG_LIST *smsg = (SMSG_LIST *)PCQueuePop(CpvAccess(smsg_list_q));
     if (smsg != NULL)
         return smsg;
@@ -338,7 +338,7 @@ static inline SMSG_LIST * smsg_allocate() {
     return (SMSG_LIST *) buf;
 }
 
-static inline void smsg_free (SMSG_LIST *smsg) {
+static INLINE_KEYWORD void smsg_free (SMSG_LIST *smsg) {
     int size = PCQueueLength (CpvAccess(smsg_list_q));
     if (size < MAX_NUM_SMSGS)
         PCQueuePush (CpvAccess(smsg_list_q), (char *) smsg);
@@ -870,7 +870,13 @@ static void MachinePostCommonInitForDCMF(int everReturn) {
  * Abort function:
  *
  ************************************************************************/
-void LrtsNotifyIdle() {}
+
+INLINE_KEYWORD void LrtsBeginIdle() {}
+
+INLINE_KEYWORD void LrtsStillIdle() {}
+
+INLINE_KEYWORD void LrtsNotifyIdle() {}
+
 void LrtsAbort(const char *message) {
     CmiError("------------- Processor %d Exiting: Called CmiAbort ------------\n"
              "{snd:%d,rcv:%d} Reason: %s\n",CmiMyPe(),
index 758943b90517d4893d2870ba9eca7fdaa332b32c..01ee4a6e5c91707e2538dbe254fdbfa5d1fbcd1d 100644 (file)
@@ -648,7 +648,7 @@ static void IndexPool_init(IndexPool *pool)
 }
 
 static
-inline int IndexPool_getslot(IndexPool *pool, void *addr, int type)
+INLINE_KEYWORD int IndexPool_getslot(IndexPool *pool, void *addr, int type)
 {
     int s, i;
 #if MULTI_THREAD_SEND  
@@ -692,7 +692,7 @@ inline int IndexPool_getslot(IndexPool *pool, void *addr, int type)
 }
 
 static
-inline  void IndexPool_freeslot(IndexPool *pool, int s)
+INLINE_KEYWORD void IndexPool_freeslot(IndexPool *pool, int s)
 {
     CmiAssert(s>=0 && s<pool->size);
 #if MULTI_THREAD_SEND
@@ -1168,8 +1168,8 @@ static void sweep_mempool(mempool_type *mptr)
     printf("[n %d] sweep_mempool slot END.\n", myrank);
 }
 
-inline
-static  gni_return_t deregisterMemory(mempool_type *mptr, block_header **from)
+
+static INLINE_KEYWORD  gni_return_t deregisterMemory(mempool_type *mptr, block_header **from)
 {
     block_header *current = *from;
 
@@ -1186,7 +1186,7 @@ static  gni_return_t deregisterMemory(mempool_type *mptr, block_header **from)
     return GNI_RC_SUCCESS;
 }
 
-inline 
+INLINE_KEYWORD 
 static gni_return_t registerFromMempool(mempool_type *mptr, void *blockaddr, size_t size, gni_mem_handle_t  *memhndl, gni_cq_handle_t cqh )
 {
     gni_return_t status = GNI_RC_SUCCESS;
@@ -1223,7 +1223,7 @@ static gni_return_t registerFromMempool(mempool_type *mptr, void *blockaddr, siz
     return status;
 }
 
-inline 
+INLINE_KEYWORD
 static gni_return_t registerMemory(void *msg, size_t size, gni_mem_handle_t *t, gni_cq_handle_t cqh )
 {
     static int rank = -1;
@@ -1247,7 +1247,7 @@ static gni_return_t registerMemory(void *msg, size_t size, gni_mem_handle_t *t,
     return  GNI_RC_ERROR_RESOURCE;
 }
 
-inline
+INLINE_KEYWORD
 static void buffer_small_msgs(SMSG_QUEUE *queue, void *msg, int size, int destNode, uint8_t tag)
 {
     MSG_LIST        *msg_tmp;
@@ -1281,12 +1281,12 @@ static void buffer_small_msgs(SMSG_QUEUE *queue, void *msg, int size, int destNo
 #endif
 }
 
-inline static void print_smsg_attr(gni_smsg_attr_t     *a)
+INLINE_KEYWORD static void print_smsg_attr(gni_smsg_attr_t     *a)
 {
     printf("type=%d\n, credit=%d\n, size=%d\n, buf=%p, offset=%d\n", a->msg_type, a->mbox_maxcredit, a->buff_size, a->msg_buffer, a->mbox_offset);
 }
 
-inline
+INLINE_KEYWORD
 static void setup_smsg_connection(int destNode)
 {
     mdh_addr_list_t  *new_entry = 0;
@@ -1349,7 +1349,7 @@ static void setup_smsg_connection(int destNode)
 }
 
 /* useDynamicSMSG */
-inline 
+INLINE_KEYWORD
 static void alloc_smsg_attr( gni_smsg_attr_t *local_smsg_attr)
 {
     gni_return_t status = GNI_RC_NOT_DONE;
@@ -1384,7 +1384,7 @@ static void alloc_smsg_attr( gni_smsg_attr_t *local_smsg_attr)
 }
 
 /* useDynamicSMSG */
-inline 
+INLINE_KEYWORD
 static int connect_to(int destNode)
 {
     gni_return_t status = GNI_RC_NOT_DONE;
@@ -1417,7 +1417,7 @@ static int connect_to(int destNode)
     return 1;
 }
 
-inline 
+INLINE_KEYWORD
 static gni_return_t send_smsg_message(SMSG_QUEUE *queue, int destNode, void *msg, int size, uint8_t tag, int inbuff, MSG_LIST *ptr )
 {
     unsigned int          remote_address;
@@ -1510,7 +1510,7 @@ static gni_return_t send_smsg_message(SMSG_QUEUE *queue, int destNode, void *msg
     return status;
 }
 
-inline 
+INLINE_KEYWORD
 static CONTROL_MSG* construct_control_msg(int size, char *msg, int seqno)
 {
     /* construct a control message and send */
@@ -1543,7 +1543,7 @@ static CONTROL_MSG* construct_control_msg(int size, char *msg, int seqno)
 
 // Large message, send control to receiver, receiver register memory and do a GET, 
 // return 1 - send no success
-inline static gni_return_t send_large_messages(SMSG_QUEUE *queue, int destNode, CONTROL_MSG  *control_msg_tmp, int inbuff, MSG_LIST *smsg_ptr, uint8_t lmsg_tag)
+INLINE_KEYWORD static gni_return_t send_large_messages(SMSG_QUEUE *queue, int destNode, CONTROL_MSG  *control_msg_tmp, int inbuff, MSG_LIST *smsg_ptr, uint8_t lmsg_tag)
 {
     gni_return_t        status  =  GNI_RC_ERROR_NOMEM;
     uint32_t            vmdh_index  = -1;
@@ -1671,8 +1671,14 @@ inline static gni_return_t send_large_messages(SMSG_QUEUE *queue, int destNode,
     return status;
 #endif
 }
-inline void LrtsNotifyIdle() {}
-inline void LrtsPrepareEnvelope(char *msg, int size)
+
+INLINE_KEYWORD void LrtsBeginIdle() {}
+
+INLINE_KEYWORD void LrtsStillIdle() {}
+
+INLINE_KEYWORD void LrtsNotifyIdle() {}
+
+INLINE_KEYWORD void LrtsPrepareEnvelope(char *msg, int size)
 {
     CmiSetMsgSize(msg, size);
     CMI_SET_CHECKSUM(msg, size);
@@ -2083,7 +2089,7 @@ static void PumpNetworkRdmaMsgs()
 
 }
 
-inline 
+INLINE_KEYWORD
 static void bufferRdmaMsg(PCQueue bufferqueue, int inst_id, gni_post_descriptor_t *pd, int ack_index)
 {
     RDMA_REQUEST        *rdma_request_msg;
@@ -3078,7 +3084,7 @@ static void  SendRdmaMsg( BufferList sendqueue)
 }
 
 static 
-inline gni_return_t _sendOneBufferedSmsg(SMSG_QUEUE *queue, MSG_LIST *ptr)
+INLINE_KEYWORD gni_return_t _sendOneBufferedSmsg(SMSG_QUEUE *queue, MSG_LIST *ptr)
 {
     CONTROL_MSG         *control_msg_tmp;
     gni_return_t        status = GNI_RC_ERROR_RESOURCE;
@@ -3551,7 +3557,7 @@ static void _init_static_smsg()
     GNI_RC_CHECK("SmsgSetMaxRetrans Init", status);
 } 
 
-inline
+INLINE_KEYWORD
 static void _init_send_queue(SMSG_QUEUE *queue)
 {
      int i;
@@ -3575,7 +3581,7 @@ static void _init_send_queue(SMSG_QUEUE *queue)
 #endif
 }
 
-inline
+INLINE_KEYWORD
 static void _init_smsg()
 {
     if(mysize > 1) {
@@ -3615,7 +3621,7 @@ static CmiUInt8 total_mempool_calls = 0;
 
 #if USE_LRTS_MEMPOOL
 
-inline
+INLINE_KEYWORD
 static void *_alloc_mempool_block(size_t *size, gni_mem_handle_t *mem_hndl, int expand_flag, gni_cq_handle_t cqh)
 {
     void *pool;
@@ -3667,14 +3673,14 @@ sweep_mempool(CpvAccess(mempool));
     return pool;
 }
 
-inline
+INLINE_KEYWORD
 static void *alloc_mempool_block(size_t *size, gni_mem_handle_t *mem_hndl, int expand_flag)
 {
     return _alloc_mempool_block(size, mem_hndl, expand_flag, rdma_rx_cqh);
 }
 
 #if CMK_PERSISTENT_COMM_PUT
-inline
+INLINE_KEYWORD
 static void *alloc_persistent_mempool_block(size_t *size, gni_mem_handle_t *mem_hndl, int expand_flag)
 {
     return _alloc_mempool_block(size, mem_hndl, expand_flag, highpriority_rx_cqh);
@@ -4135,11 +4141,11 @@ static int _absoluteTime = 0;
 static int _is_global = 0;
 static struct timespec start_ts;
 
-inline int CmiTimerIsSynchronized() {
+INLINE_KEYWORD int CmiTimerIsSynchronized() {
     return 0;
 }
 
-inline int CmiTimerAbsolute() {
+INLINE_KEYWORD int CmiTimerAbsolute() {
     return _absoluteTime;
 }
 
index ce8b981e0f8d3c0fd78f8bcbd7004455e1588896..9635d766fab33be5c61df613d2ab595d0133038b 100644 (file)
@@ -1546,7 +1546,11 @@ void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID) {
 #endif
 }
 
-void LrtsNotifyIdle() {}
+INLINE_KEYWORD void LrtsNotifyIdle() {}
+
+INLINE_KEYWORD void LrtsBeginIdle() {}
+
+INLINE_KEYWORD void LrtsStillIdle() {}
 
 void LrtsPreCommonInit(int everReturn) {
 
index df1a537a1222b8eee7edbabc69c13f484406997e..ae8cb92d1ba61c08caff4f42038eb00a6cac1117 100644 (file)
@@ -169,7 +169,7 @@ volatile int outstanding_recvs;
 #define A_PRIME 13
 #define B_PRIME 19
 
-static inline unsigned myrand (unsigned *seed) {
+static INLINE_KEYWORD unsigned myrand (unsigned *seed) {
   *seed = A_PRIME * (*seed) + B_PRIME;
   return *seed;
 }
@@ -706,6 +706,10 @@ void LrtsAbort(const char *message) {
   assert(0);
 }
 
+INLINE_KEYWORD void LrtsBeginIdle() {}
+
+INLINE_KEYWORD void LrtsStillIdle() {}
+
 void LrtsNotifyIdle()
 {
 #if CMK_SMP && CMK_PAMI_MULTI_CONTEXT
index 9460737f70f2797bc032b44ffc56868f0934c079..cc3d055b3ea793ab740e2129a01eac6822438f50 100644 (file)
@@ -939,6 +939,7 @@ static void ConverseRunPE(int everReturn) {
     CcdCallOnConditionKeep(CcdPROCESSOR_BEGIN_IDLE,(CcdVoidFn)CmiNotifyBeginIdle,(void *)sidle);
     CcdCallOnConditionKeep(CcdPROCESSOR_STILL_IDLE,(CcdVoidFn)CmiNotifyStillIdle,(void *)sidle);
 #else
+    CcdCallOnConditionKeep(CcdPROCESSOR_BEGIN_IDLE,(CcdVoidFn)CmiNotifyBeginIdle, NULL);
     CcdCallOnConditionKeep(CcdPROCESSOR_STILL_IDLE,(CcdVoidFn)CmiNotifyStillIdle, NULL);
 #endif
 
@@ -1159,6 +1160,7 @@ static CmiIdleState *CmiNotifyGetState(void) {
 static void CmiNotifyBeginIdle(CmiIdleState *s) {
     s->sleepMs=0;
     s->nIdles=0;
+    LrtsBeginIdle();
 }
 
 /*Number of times to spin before sleeping*/
@@ -1184,7 +1186,7 @@ static void CmiNotifyStillIdle(CmiIdleState *s) {
     }
     }
 #endif
-
+    LrtsStillIlde();
     MACHSTATE1(2,"still idle (%d) end {",CmiMyPe())
 }
 
index 9f33e9a638f1b9e2c60dc3b8c6cbe6de97178c27..f4415830673f9620d0f99708c11f774999e88c9f 100644 (file)
@@ -31,7 +31,9 @@ void LrtsPostNonLocal();
 
 void* LrtsAlloc(int, int);
 void  LrtsFree(void*);
-void LrtsNotifyIdle();
+void  LrtsNotifyIdle();
 
-void LrtsBarrier();
+void  LrtsBeginIdle();
+void  LrtsStillIdle();
+void  LrtsBarrier();
 #endif