fixed persistent put_done_tag in sendbuf
authorYanhua Sun <yanhuas@jyc1.(none)>
Tue, 20 Mar 2012 05:30:29 +0000 (00:30 -0500)
committerYanhua Sun <yanhuas@jyc1.(none)>
Tue, 20 Mar 2012 05:30:29 +0000 (00:30 -0500)
src/arch/gemini_gni/machine-persistent.c
src/arch/gemini_gni/machine.c
src/conv-core/converse.h

index fcae4b260c030b1de946e46e5e61ca60067056cf..c607865a802a966535a24c7e373011b52d48a6dd 100644 (file)
   * persist_machine_init  // machine specific initialization call
 */
 
-#if USE_LRTS_MEMPOOL
-#define LRTS_GNI_RDMA_PUT_THRESHOLD  2048
-#else
-#define LRTS_GNI_RDMA_PUT_THRESHOLD  16384
-#endif
-
 void LrtsSendPersistentMsg(PersistentHandle h, int destNode, int size, void *m)
 {
     gni_post_descriptor_t *pd;
@@ -43,7 +37,7 @@ void LrtsSendPersistentMsg(PersistentHandle h, int destNode, int size, void *m)
     if (slot->destBuf[0].destAddress) {
         // uGNI part
         MallocPostDesc(pd);
-        if(size <= LRTS_GNI_RDMA_PUT_THRESHOLD) {
+        if(size <= LRTS_GNI_RDMA_THRESHOLD) {
             pd->type            = GNI_POST_FMA_PUT;
         }
         else
@@ -72,7 +66,7 @@ void LrtsSendPersistentMsg(PersistentHandle h, int destNode, int size, void *m)
 #else
 #if REMOTE_EVENT
         pd->cq_mode |= GNI_CQMODE_REMOTE_EVENT;
-        int sts = GNI_EpSetEventData(ep_hndl_array[destNode], inst_id, ACK_EVENT((int)(slot->destHandle)));
+        int sts = GNI_EpSetEventData(ep_hndl_array[destNode], destNode, ACK_EVENT((int)(slot->destHandle)));
         GNI_RC_CHECK("GNI_EpSetEventData", sts);
 #endif
 
index 3f7c06d86ee13ac66006afc369e004b1e6590444..4cc109b10d3a5acc564f3073600b17041cdba359 100644 (file)
@@ -750,6 +750,18 @@ static int checksum_flag = 0;
 #endif
 /* =====End of Definitions of Message-Corruption Related Macros=====*/
 
+static int print_stats = 0;
+static int stats_off = 0;
+void CmiTurnOnStats()
+{
+    stats_off = 0;
+}
+
+void CmiTurnOffStats()
+{
+    stats_off = 1;
+}
+
 #if CMK_WITH_STATS
 FILE *counterLog = NULL;
 typedef struct comm_thread_stats
@@ -785,10 +797,10 @@ static void init_comm_stats()
   memset(&comm_stats, 0, sizeof(Comm_Thread_Stats));
 }
 
-#define SMSG_CREATION( x ) if(print_stats) { x->creation_time = CmiWallTimer(); }
+#define SMSG_CREATION( x ) if(print_stats && !stats_off) { x->creation_time = CmiWallTimer(); }
 
 #define SMSG_SENT_DONE(creation_time, tag)  \
-        if (print_stats) {   if( tag == SMALL_DATA_TAG) comm_stats.smsg_data_count++;  \
+        if (print_stats && !stats_off) {   if( tag == SMALL_DATA_TAG) comm_stats.smsg_data_count++;  \
             else  if( tag == LMSG_INIT_TAG) comm_stats.lmsg_init_count++;  \
             else  if( tag == ACK_TAG) comm_stats.ack_count++;  \
             else  if( tag == BIG_MSG_TAG) comm_stats.big_msg_ack_count++;  \
@@ -799,23 +811,23 @@ static void init_comm_stats()
         }
 
 #define SMSG_TRY_SEND(tag)  \
-        if (print_stats){   if( tag == SMALL_DATA_TAG) comm_stats.try_smsg_data_count++;  \
+        if (print_stats && !stats_off){   if( tag == SMALL_DATA_TAG) comm_stats.try_smsg_data_count++;  \
             else  if( tag == LMSG_INIT_TAG) comm_stats.try_lmsg_init_count++;  \
             else  if( tag == ACK_TAG) comm_stats.try_ack_count++;  \
             else  if( tag == BIG_MSG_TAG) comm_stats.try_big_msg_ack_count++;  \
             comm_stats.try_smsg_count++; \
         }
 
-#define  RDMA_TRY_SEND()        if (print_stats) {comm_stats.try_rdma_count++;}
+#define  RDMA_TRY_SEND()        if (print_stats && !stats_off) {comm_stats.try_rdma_count++;}
 
 #define  RDMA_TRANS_DONE(x)      \
-         if (print_stats) {  double rdma_trans_time = CmiWallTimer() - x ; \
+         if (print_stats && !stats_off) {  double rdma_trans_time = CmiWallTimer() - x ; \
              if(rdma_trans_time > comm_stats.max_time_from_rdma_init_to_rdma_done) comm_stats.max_time_from_rdma_init_to_rdma_done = rdma_trans_time; \
              comm_stats.all_time_from_rdma_init_to_rdma_done += rdma_trans_time; \
          }
 
 #define  RDMA_TRANS_INIT(x)      \
-         if (print_stats) {   comm_stats.rdma_count++;  \
+         if (print_stats && !stats_off) {   comm_stats.rdma_count++;  \
              double rdma_trans_time = CmiWallTimer() - x ; \
              if(rdma_trans_time > comm_stats.max_time_from_control_to_rdma_init) comm_stats.max_time_from_control_to_rdma_init = rdma_trans_time; \
              comm_stats.all_time_from_control_to_rdma_init += rdma_trans_time; \
@@ -843,8 +855,6 @@ static void print_comm_stats()
 #define STATS_SEND_SMSGS_TIME(x)     x
 #endif
 
-static int print_stats = 0;
-
 static void
 allgather(void *in,void *out, int len)
 {
@@ -2847,6 +2857,15 @@ static int SendBufferMsg(SMSG_QUEUE *queue)
                     FreeControlMsg((CONTROL_MSG*)ptr->msg);
                 }
                 break;
+#if CMK_PERSISTENT_COMM
+            case PUT_DONE_TAG:
+                status = send_smsg_message(queue, ptr->destNode, ptr->msg, ptr->size, ptr->tag, 1, ptr);  
+                if(status == GNI_RC_SUCCESS)
+                {
+                    FreeControlMsg((CONTROL_MSG*)ptr->msg);
+                }
+                break;
+#endif
 #if CMK_DIRECT
             case DIRECT_PUT_DONE_TAG:
                 status = send_smsg_message(queue, ptr->destNode, ptr->msg, sizeof(CMK_DIRECT_HEADER), ptr->tag, 1, ptr);  
@@ -3555,6 +3574,8 @@ void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID)
 #endif
 
     print_stats = CmiGetArgFlag(*argv, "+print_stats");
+    
+    stats_off = CmiGetArgFlag(*argv, "+stats_off");
 
     /* init DMA buffer for medium message */
 
index 7ec8e3df10531282d251ae04e463d4815d5a273b..9957f63456e8c1d3f01570c1fbfe012975e00a04 100644 (file)
@@ -1829,6 +1829,14 @@ extern int *memCriticalEntries;
 
 double CmiReadSize(const char *str);
 
+#if  CMK_CONVERSE_GEMINI_UGNI
+void CmiTurnOnStats();
+void CmiTurnOffStats();
+#else
+#define CmiTurnOnStats()
+#define CmiTurnOffStats()
+#endif
+
 #if defined(__cplusplus)
 }                                         /* end of extern "C"  */
 #endif
@@ -1904,5 +1912,4 @@ EXTERN void CmiNotifyCommThd(CmiNotifyCommThdMsg *msg);
 CpvCExtern(int, _urgentSend);
 #define CmiEnableUrgentSend(yn)   CpvAccess(_urgentSend)=(yn)
 
-
 #endif /* CONVERSE_H */