parameter adjustment
authorYanhua Sun <sun51@hopper11.(none)>
Wed, 5 Oct 2011 20:20:40 +0000 (13:20 -0700)
committerYanhua Sun <sun51@hopper11.(none)>
Wed, 5 Oct 2011 20:20:40 +0000 (13:20 -0700)
src/arch/gemini_gni/machine-persistent.c
src/arch/gemini_gni/machine.c

index 3ae2370e4a806f9b5e4f1ade6598eaad8133df18..30e52685ded8fb2053dc3ab88371ec6f0b70d28b 100644 (file)
@@ -17,7 +17,7 @@
   * persist_machine_init  // machine specific initialization call
 */
 
-
+#define LRTS_GNI_RDMA_PUT_THRESHOLD  2048
 void LrtsSendPersistentMsg(PersistentHandle h, int destPE, int size, void *m)
 {
     gni_post_descriptor_t *pd;
@@ -38,16 +38,28 @@ void LrtsSendPersistentMsg(PersistentHandle h, int destPE, int size, void *m)
     if (slot->destBuf[0].destAddress) {
         // uGNI part
         MallocPostDesc(pd);
-        if(size < LRTS_GNI_RDMA_PUT_THRESHOLD) 
+#if USE_LRTS_MEMPOOL
+        if(size <= 2048){
+#else
+        if(size <= 16384){
+#endif
             pd->type            = GNI_POST_FMA_PUT;
+        }
         else
+        {
             pd->type            = GNI_POST_RDMA_PUT;
-
+#if USE_LRTS_MEMPOOL
+            pd->local_mem_hndl  = GetMemHndl(m);
+#else
+            status = MEMORY_REGISTER(onesided_hnd, nic_hndl,  m, size, &(pd->local_mem_hndl), &omdh);
+#endif
+            GNI_RC_CHECK("Mem Register before post", status);
+        }
         pd->cq_mode         = GNI_CQMODE_GLOBAL_EVENT;
         pd->dlvr_mode       = GNI_DLVMODE_PERFORMANCE;
         pd->length          = size;
         pd->local_addr      = (uint64_t) m;
-        pd->local_mem_hndl  = GetMemHndl(m) ;
+       
         pd->remote_addr     = (uint64_t)slot->destBuf[0].destAddress;
         pd->remote_mem_hndl = slot->destBuf[0].mem_hndl;
         pd->src_cq_hndl     = 0;//post_tx_cqh;     /* smsg_tx_cqh;  */
@@ -194,6 +206,7 @@ void persist_machine_init(void)
 void setupRecvSlot(PersistentReceivesTable *slot, int maxBytes)
 {
   int i;
+  gni_return_t status;
   for (i=0; i<PERSIST_BUFFERS_NUM; i++) {
     char *buf = PerAlloc(maxBytes+sizeof(int)*2);
     _MEMCHECK(buf);
@@ -201,7 +214,12 @@ void setupRecvSlot(PersistentReceivesTable *slot, int maxBytes)
     slot->destBuf[i].destAddress = buf;
     /* note: assume first integer in elan converse header is the msg size */
     slot->destBuf[i].destSizeAddress = (unsigned int*)buf;
+#if USE_LRTS_MEMPOOL
     slot->destBuf[i].mem_hndl = GetMemHndl(buf);
+#else
+    status = MEMORY_REGISTER(onesided_hnd, nic_hndl,  buf, maxBytes+sizeof(int)*2 , &(slot->destBuf[i].mem_hndl), &omdh);
+    GNI_RC_CHECK("Mem Register before post", status);
+#endif
   }
   slot->sizeMax = maxBytes;
 }
index 8c568fa420ea523a5b2bd163aaa9f42b1ebe2098..5be9a40c0f0fe7461fe2417b0f60e9a2e5131803 100644 (file)
@@ -37,7 +37,7 @@ static void sleep(int secs) {
 
 
 #define REMOTE_EVENT         0
-#define USE_LRTS_MEMPOOL   1
+#define USE_LRTS_MEMPOOL   0
 
 #if USE_LRTS_MEMPOOL
 static CmiInt8 _mempool_size = 1024ll*1024*32;
@@ -92,17 +92,17 @@ uint8_t   onesided_hnd, omdh;
 #define FMA_PER_CORE  1024
 #define FMA_BUFFER_SIZE 1024
 /* If SMSG is used */
-static int  SMSG_MAX_MSG;
+static int  SMSG_MAX_MSG = 1024;
 //static int  log2_SMSG_MAX_MSG;
 #define SMSG_MAX_CREDIT  36
 
 #define MSGQ_MAXSIZE       2048
 /* large message transfer with FMA or BTE */
 #define LRTS_GNI_RDMA_THRESHOLD  2048
-#define LRTS_GNI_RDMA_PUT_THRESHOLD  2048
+//2048
 
-#define REMOTE_QUEUE_ENTRIES  2048 
-#define LOCAL_QUEUE_ENTRIES   64 
+#define REMOTE_QUEUE_ENTRIES  20480 
+#define LOCAL_QUEUE_ENTRIES   20480 
 
 #define PUT_DONE_TAG      0x29
 #define ACK_TAG           0x30
@@ -1199,6 +1199,9 @@ static void PumpLocalRdmaTransactions()
             switch (tmp_pd->type) {
 #if CMK_PERSISTENT_COMM
             case GNI_POST_RDMA_PUT:
+#if     !USE_LRTS_MEMPOOL
+                MEMORY_DEREGISTER(onesided_hnd, nic_hndl, &tmp_pd->local_mem_hndl, &omdh);
+#endif
             case GNI_POST_FMA_PUT:
 #if useDynamicSMSG
                 SendSmsgConnectMsg();
@@ -1212,6 +1215,9 @@ static void PumpLocalRdmaTransactions()
             case GNI_POST_RDMA_GET:
             case GNI_POST_FMA_GET:
                 msg_tag = ACK_TAG;  
+#if     !USE_LRTS_MEMPOOL
+                MEMORY_DEREGISTER(onesided_hnd, nic_hndl, &tmp_pd->local_mem_hndl, &omdh);
+#endif
                 break;
             default:
                 CmiAbort("PumpLocalRdmaTransactions: unknown type!");
@@ -1231,9 +1237,6 @@ static void PumpLocalRdmaTransactions()
             {
                 FreeControlMsg(ack_msg_tmp);
             }
-#if     !USE_LRTS_MEMPOOL
-            MEMORY_DEREGISTER(onesided_hnd, nic_hndl, &tmp_pd->local_mem_hndl, &omdh);
-#endif
 #if CMK_PERSISTENT_COMM
             if (tmp_pd->type == GNI_POST_RDMA_GET || tmp_pd->type == GNI_POST_FMA_GET)
 #endif
@@ -1764,8 +1767,8 @@ static void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID)
     CmiGetArgLong(*argv, "+useMemorypoolSize", &_mempool_size);
     if (myrank==0) printf("Charm++> use memorypool size: %1.fMB\n", _mempool_size/1024.0/1024);
     init_mempool(_mempool_size);
-    //init_mempool(Mempool_MaxSize);
 #endif
+    //init_mempool(Mempool_MaxSize);
 
     /* init DMA buffer for medium message */
 
@@ -1779,7 +1782,7 @@ void* LrtsAlloc(int n_bytes, int header)
 {
     void *ptr;
 #if 0
-    CmiPrintf("\n[PE:%d]Alloc Lrts for bytes=%d, head=%d\n", CmiMyPe(), n_bytes, header);
+    CmiPrintf("\n[PE:%d]Alloc Lrts for bytes=%d, head=%d %d\n", CmiMyPe(), n_bytes, header, SMSG_MAX_MSG);
 #endif
     if(n_bytes <= SMSG_MAX_MSG)
     {