Merge branch 'charm' of charmgit:charm into isomalloc
authorNikhil Jain <nikhil@illinois.edu>
Tue, 15 Nov 2011 10:59:36 +0000 (04:59 -0600)
committerNikhil Jain <nikhil@illinois.edu>
Tue, 15 Nov 2011 10:59:36 +0000 (04:59 -0600)
39 files changed:
examples/charm++/state_space_searchengine/3SAT/Makefile
examples/charm++/state_space_searchengine/BalancedTree/Makefile
examples/charm++/state_space_searchengine/Hamiltonian_SE/Makefile
examples/charm++/state_space_searchengine/Makefile.common
examples/charm++/state_space_searchengine/NQueens/Makefile
examples/charm++/state_space_searchengine/README
examples/charm++/state_space_searchengine/TSP_SE/Makefile
examples/charm++/state_space_searchengine/UnbalancedTreeSearch_SE/Makefile
src/arch/gemini_gni-crayxe/conv-mach-pxshm.h
src/arch/gemini_gni-crayxe/conv-mach.h
src/arch/gemini_gni-crayxe/conv-mach.sh
src/arch/gemini_gni/machine.c
src/arch/mpi-crayxe/conv-mach.sh
src/arch/mpi-crayxt/conv-mach.sh
src/arch/mpi-win32/conv-mach.sh
src/arch/mpi-win64/conv-mach.sh
src/arch/multicore-cygwin/conv-mach.sh
src/arch/multicore-win32/conv-mach.sh
src/arch/multicore-win64/conv-mach.sh
src/arch/net-cygwin/conv-mach.sh
src/arch/net-sol/cc-cc.sh
src/arch/net-sol/conv-mach.sh
src/arch/net-win32/conv-mach.sh
src/arch/net-win64/conv-mach.sh
src/arch/uth-linux-x86_64/conv-mach.sh
src/ck-core/ckarray.h
src/ck-core/ckmemcheckpoint.C
src/ck-core/ckmemcheckpoint.ci
src/ck-core/ckreduction.C
src/ck-core/ckreduction.h
src/libs/ck-libs/Makefile
src/libs/ck-libs/MeshStreamer/MeshStreamer.h
src/libs/ck-libs/multicast/ckmulticast.h
src/libs/ck-libs/state_space_searchengine/Makefile [moved from examples/charm++/state_space_searchengine/searchengineLib/Makefile with 51% similarity]
src/libs/ck-libs/state_space_searchengine/searchEngine.C [moved from examples/charm++/state_space_searchengine/searchengineLib/searchEngine.C with 100% similarity]
src/libs/ck-libs/state_space_searchengine/searchEngine.ci [moved from examples/charm++/state_space_searchengine/searchengineLib/searchEngine.ci with 100% similarity]
src/libs/ck-libs/state_space_searchengine/searchEngine.h [moved from examples/charm++/state_space_searchengine/searchengineLib/searchEngine.h with 98% similarity]
src/libs/ck-libs/state_space_searchengine/searchEngine_impl.h [moved from examples/charm++/state_space_searchengine/searchengineLib/searchEngine_impl.h with 100% similarity]
tests/util/check.C

index 6fb7873bdd6d1f43984d8c07a93d85dac0f92046..1e5225b3aa3e53a01d1ccee41749db059efdf635 100644 (file)
@@ -1,16 +1,11 @@
-CHARMC=charmc
 SRC_DIR=./
 MINISAT_DIR=./minisat
-OPTS =-g -I. -DUSEPRIORITY -DOPTIMIZE -D__ALWAYS_INLINE -DSTATISTIC -DONESOLUTION 
-
-OPTS += -I../searchengineLib -L../searchengineLib
+OPTS =-g -I. -DUSEPRIORITY -D__ALWAYS_INLINE -DSTATISTIC -DONESOLUTION 
 
 include ../Makefile.common
 
 all: main main_minisat
 
-include ../Makefile.common
-
 CMINISATFLAGS = -I$(MINISAT) -DMINISAT
 
 main:  main.o searchEngineAPI.o 
@@ -22,9 +17,6 @@ main.decl.h: $(SRC_DIR)/main.ci
 main.o: $(SRC_DIR)/defines.h $(SRC_DIR)/main.C main.decl.h
        $(CHARMC) $(OPTS) -c $(SRC_DIR)/main.C
 
-searchEngine.decl.h: $(SRC_DIR)/searchEngine.ci
-       $(CHARMC) $(OPTS) -E $(SRC_DIR)/searchEngine.ci
-
 searchEngineAPI.o: $(SRC_DIR)/searchEngineAPI.C $(SRC_DIR)/searchEngineAPI.h
        $(CHARMC) -c  $(SRC_DIR)/searchEngineAPI.C
 
index fa80e573b717457ba8cbb400fba432936c233471..b35c4d9fc1642fb93d1a174e91eb632127e3b2b8 100644 (file)
@@ -1,9 +1,6 @@
 
-override OPTS += -I../searchengineLib -L../searchengineLib
-
 include ../Makefile.common
 
-
 all: main  main.nb  main.ws
 
 projections: main.prj  main.nb.prj
index be27e22d044cec352ef006ca9e17491d03aa2182..398ee0b509ae92404d274db3818a853226af5916 100644 (file)
@@ -1,5 +1,5 @@
 
-override OPTS += -I../searchengineLib -L../searchengineLib -DVALUE_HEURISTIC #-DUSERSOLVER 
+override OPTS += -DVALUE_HEURISTIC #-DUSERSOLVER 
 
 include ../Makefile.common
 
index 8a4384167a614d9aa6b1a96c7044c22952c7ce40..66458ca44d6d622559d735e6f7be1bf80b81fa09 100644 (file)
@@ -1,5 +1,5 @@
 CHARMC_PATH = ../../../../bin
-CHARMC=$(CHARMC_PATH)/charmc -O3 $(OPTS)
+CHARMC=$(CHARMC_PATH)/charmc $(OPTS)
 
-override OPTS += -g -O3 -DADAPTIVE 
+#override OPTS += -g -O3 -DADAPTIVE 
 #-DUSEBITPRIORITY -DONESOLUTION -DADAPTIVE
index 38f3fea681097e6bc62e0182a9b12afad20f5672..a4248105dc6543e5bf40ec07685cf7531d65f717 100644 (file)
@@ -1,6 +1,4 @@
 
-override OPTS += -I../searchengineLib -L../searchengineLib
-
 include ../Makefile.common
 
 
index d71ae7e2fa403fd877b3491f7b00aa5364816302..09def146de459d6e810078764d7d04ccb0299e4b 100644 (file)
@@ -1,14 +1,18 @@
 Steps to use the search engine:
 
-(1) In Makefile.common in top level, set Charm++ path
-(2) Go to template directory.  
-  (1)If you are using priority, define -DUSEBITPRIORITY
+(1) build state space searchengine in charm++ libs
+  (1) cd charm/<build dir>/tmp/libs/ck-libs/state_space_searchengine
+  (2) type 'make OPTS=-O3'
 
-  type 'make'
+      If you are using priority, add -DUSEBITPRIORITY to OPTS,
+      and type 'make OPTS="-O3 -DUSEBITPRIORITY"'
 
-(3) Go to your own application directory. For example NQueens:
+    this will build two search engine libraries: libmodulesearchEngine.a and libmodulesearchEngine_bound.a (for branch-and-bound).
 
-   type 'make'.  Same macros with step 2.
+(2) Go to your own application directory. For example, 
+   type 'cd NQueens'
+
+   and then type 'make OPTS=-O3'.  Make sure to use the same macro as in step (1)/(2) above.
 
 
 *Files to be changed. 
index 2f4251212b72f026ed7feb0b9ba1c4bb0ea6fd14..232df3c64fec28cc4f01797df5d05b4d5403e27e 100644 (file)
@@ -1,7 +1,5 @@
 OPTS =  -DBRANCHBOUND #-DSTATISTIC#  -DOPTIMIZE #-DUSEPRIORITY -DOPTIMIZE #-DADPATIVE
 
-OPTS += -I../searchengineLib -L../searchengineLib
-
 include ../Makefile.common
 
 
index 0c5d3fab848b1363c38cbeca0eb5a9f8ddfe2e74..a2893f534a32a062943dea2f119f75aa61a9b5c8 100644 (file)
@@ -19,7 +19,6 @@ ifeq ($(RNG), ALFG)
 endif
 
 OPTS = -DBRG_C99_TYPES #-std=c99 
-OPTS += -I../searchengineLib -L../searchengineLib
 
 include ../Makefile.common
 
index 03ff9197d0ce6d1626aa3a15d24b1846e5a281d1..a5b558488585aff5336431482001f6a363ce9723 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef _CONV_MACH_PXSHM_
+#define _CONV_MACH_PXSHM_
+
 #undef CMK_USE_PXSHM
 #define CMK_USE_PXSHM                  1
 
@@ -11,3 +14,5 @@
 #define CMK_WHEN_PROCESSOR_IDLE_USLEEP  0
 
 #define PXSHM_LOCK                      1
+
+#endif
index de18e134b520810a651e0648fc60c28146f1a054..0b400dce48683e5262a2f665ea31ef9b9d61be26 100644 (file)
@@ -105,4 +105,6 @@ extended header must contain also another field called "pn" (phase number).
 
 */
 
+#include "conv-mach-pxshm.h"
+
 #endif
index 06e6ce45f9ebb1be1e8e85cf56d684277e6be093..a19cdf7fc9ff496aec0fe12b668631b8d61907ce 100644 (file)
@@ -3,7 +3,8 @@ PMI_LIBS=`pkg-config --libs cray-pmi`
 UGNI_CFLAGS=`pkg-config --cflags cray-ugni`
 UGNI_LIBS=`pkg-config --libs cray-ugni`
 
-PGCC=`CC -V 2>/dev/null | grep pgCC`
+PGCC=`CC -V 2>&1 | grep pgCC`
+ICPC=`CC -V 2>&1 | grep Intel`
 
 CMK_CPP_CHARM='/lib/cpp -P'
 CMK_CPP_C="cc -E"
@@ -24,6 +25,10 @@ CMK_CXX="$CMK_CXX -DCMK_FIND_FIRST_OF_PREDICATE=1 "
 # gcc is needed for building QT
 CMK_SEQ_CC="gcc "
 CMK_SEQ_CXX="pgCC "
+elif test -n "$ICPC"
+then
+CMK_SEQ_CC="icc -fPIC "
+CMK_SEQ_CXX="icpc -fPIC "
 else
 CMK_SEQ_CC="gcc "
 CMK_SEQ_CXX="g++ "
@@ -49,4 +54,4 @@ CMK_F90_USE_MODDIR=1
 CMK_F90_MODINC="-I"
 CMK_MOD_EXT="mod"
 
-CMK_NO_BUILD_SHARED=true
+. $CHARMINC/conv-mach-pxshm.sh
index 72a455415aa718e93f710067ab0d5f1e490a626b..984ed0a3ee51d050d4316ccef61eb264ca5e8185 100644 (file)
@@ -46,13 +46,16 @@ static void sleep(int secs) {
 
 #define oneMB (1024ll*1024)
 #if CMK_SMP
-static CmiInt8 _mempool_size = 4*oneMB;
+static CmiInt8 _mempool_size = 8*oneMB;
 #else
 static CmiInt8 _mempool_size = 32*oneMB;
 #endif
-static CmiInt8 _expand_mem =  1*oneMB;
+static CmiInt8 _expand_mem =  4*oneMB;
 #endif
 
+#define BIG_MSG       4*oneMB
+#define ONE_SEG       8*oneMB
+
 #define PRINT_SYH  0
 #if CMK_SMP
 #define COMM_THREAD_SEND 1
@@ -105,11 +108,7 @@ uint8_t   onesided_hnd, omdh;
 
 /* =======Beginning of Definitions of Performance-Specific Macros =======*/
 /* If SMSG is not used */
-#define BIG_MSG       1*oneMB
-#define ONE_SEG       1*oneMB
 
-//#define BIG_MSG        65536 
-//#define ONE_SEG        16384
 #define FMA_PER_CORE  1024
 #define FMA_BUFFER_SIZE 1024
 /* If SMSG is used */
@@ -837,7 +836,7 @@ static void send_large_messages(int destNode, CONTROL_MSG  *control_msg_tmp)
     }else
     {
         if( control_msg_tmp->seq_id == 1)
-            size = ONE_SEG;
+            size = size>ONE_SEG?ONE_SEG:size;
 
         status = MEMORY_REGISTER(onesided_hnd, nic_hndl, control_msg_tmp->source_addr, ALIGN64(size), &(control_msg_tmp->source_mem_hndl), &omdh);
         if(status == GNI_RC_SUCCESS)
@@ -1116,7 +1115,7 @@ static void getLargeMsgRequest(void* header, uint64_t inst_id )
     if(request_msg->seq_id < 2)  
         msg_data = CmiAlloc(size);
     else
-        msg_data = request_msg-> dest_addr;
+        msg_data = (void*)request_msg-> dest_addr;
     _MEMCHECK(msg_data);
    
     MallocPostDesc(pd);
@@ -1829,8 +1828,6 @@ printf("[%d:%d:%d] steal from %d tail: %p size: %d %d %d\n", CmiMyPe(), CmiMyNod
     }
 
       /* steal failed, deregister and free memblock now */
-    int ret = posix_memalign(&pool, ALIGNBUF, *size);
-    CmiAssert(ret == 0);
     int freed = 0;
     for (k=0; k<CmiMyNodeSize()+1; k++) {
         i = (CmiMyRank()+k)%CmiMyNodeSize();
@@ -1874,6 +1871,10 @@ printf("[%d:%d:%d] free rank: %d ptr: %p size: %d wanted: %d\n", CmiMyPe(), CmiM
             free(ptr);
              // try now
             if (freed > *size) {
+              if (pool == NULL) {
+                int ret = posix_memalign(&pool, ALIGNBUF, *size);
+                CmiAssert(ret == 0);
+              }
               status = MEMORY_REGISTER(onesided_hnd, nic_hndl, pool, *size,  mem_hndl, &omdh);
               if (status == GNI_RC_SUCCESS) {
                 if (i!=CmiMyRank()) CmiUnlock(mptr->mempoolLock);
@@ -1892,7 +1893,7 @@ printf("[%d:%d:%d] TRIED but fails: %d wanted: %d %d\n", CmiMyPe(), CmiMyNode(),
         if (i!=CmiMyRank()) CmiUnlock(mptr->mempoolLock);
     }
       /* still no luck registering pool */
-    free(pool);
+    if (pool) free(pool);
     return NULL;
 }
 #endif
@@ -1931,6 +1932,7 @@ void *alloc_mempool_block(size_t *size, gni_mem_handle_t *mem_hndl, int expand_f
     if(status != GNI_RC_SUCCESS)
         printf("[%d] Charm++> Fatal error with registering memory of %d bytes: Please try to use large page (module load craype-hugepages8m) or contact charm++ developer for help.[%lld, %lld]\n", CmiMyPe(), *size, total_mempool_size, total_mempool_calls);
     GNI_RC_CHECK("Mempool register", status);
+    //printf("####[%d] Memory pool registering memory of %d bytes: [mempool=%lld, calls=%lld]\n", CmiMyPe(), *size, total_mempool_size, total_mempool_calls);
     return pool;
 }
 
@@ -2065,7 +2067,26 @@ void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID)
         PMI_Barrier();
     }
 #if     USE_LRTS_MEMPOOL
-    CmiGetArgLong(*argv, "+useMemorypoolSize", &_mempool_size);
+    char *str;
+    //if (CmiGetArgLong(*argv, "+useMemorypoolSize", &_mempool_size))
+    if (CmiGetArgStringDesc(*argv,"+useMemorypoolSize",&str,"Set the memory pool size")) 
+    {
+      if (strpbrk(str,"G")) {
+        sscanf(str, "%lldG", &_mempool_size);
+        _mempool_size *= 1024ll*1024*1024;
+      }
+      else if (strpbrk(str,"M")) {
+        sscanf(str, "%lldM", &_mempool_size);
+        _mempool_size *= 1024*1024;
+      }
+      else if (strpbrk(str,"K")) {
+        sscanf(str, "%lldK", &_mempool_size);
+        _mempool_size *= 1024;
+      }
+      else {
+        sscanf(str, "%lld", &_mempool_size);
+      }
+    }
     if (myrank==0) printf("Charm++> use memorypool size: %1.fMB\n", _mempool_size/1024.0/1024);
 #endif
 
@@ -2099,6 +2120,7 @@ void* LrtsAlloc(int n_bytes, int header)
             ptr = res - sizeof(mempool_header) + ALIGNBUF - header;
         }else 
         {
+            //printf("$$$$ [%d] Large message  %d\n", myrank, n_bytes); 
             char *res = memalign(ALIGNBUF, n_bytes+ALIGNBUF);
             ptr = res + ALIGNBUF - header;
 
index e59e457aa26b1f4097faccf7f01539063f9ee995..e3b4b0e03f66a4a986e86ff60e2b7b7447b9568e 100644 (file)
@@ -3,7 +3,8 @@
 
 CMK_BUILD_CRAY=1
 
-PGCC=`CC -V 2>/dev/null | grep pgCC`
+PGCC=`CC -V 2>&1 | grep pgCC`
+ICPC=`CC -V 2>&1 | grep Intel`
 
 CMK_CPP_CHARM="/lib/cpp -P"
 CMK_CPP_C="cc -E $CMK_DEFS "
@@ -27,6 +28,10 @@ CMK_CXX="$CMK_CXX -DCMK_FIND_FIRST_OF_PREDICATE=1 "
 # gcc is needed for building QT
 CMK_SEQ_CC="gcc -fPIC "
 CMK_SEQ_CXX="pgCC -fPIC "
+elif test -n "$ICPC"
+then
+CMK_SEQ_CC="icc -fPIC "
+CMK_SEQ_CXX="icpc -fPIC "
 else
 CMK_SEQ_CC="gcc -fPIC"
 CMK_SEQ_CXX="g++ -fPIC "
index e59e457aa26b1f4097faccf7f01539063f9ee995..e4739e8abaa0464125cea490bb2eee475324d2bd 100644 (file)
@@ -3,7 +3,8 @@
 
 CMK_BUILD_CRAY=1
 
-PGCC=`CC -V 2>/dev/null | grep pgCC`
+PGCC=`CC -V 2>&1 | grep pgCC`
+ICPC=`CC -V 2>&1 | grep Intel`
 
 CMK_CPP_CHARM="/lib/cpp -P"
 CMK_CPP_C="cc -E $CMK_DEFS "
@@ -27,6 +28,10 @@ CMK_CXX="$CMK_CXX -DCMK_FIND_FIRST_OF_PREDICATE=1 "
 # gcc is needed for building QT
 CMK_SEQ_CC="gcc -fPIC "
 CMK_SEQ_CXX="pgCC -fPIC "
+elif test -n "$ICPC"
+then
+CMK_SEQ_CC="icc -fPIC "
+CMK_SEQ_CXX="icpc -fPIC "
 else
 CMK_SEQ_CC="gcc -fPIC"
 CMK_SEQ_CXX="g++ -fPIC "
@@ -48,10 +53,37 @@ CMK_QT="generic64"
 # for F90 compiler
 CMK_CF77="ftn "
 CMK_CF90="ftn "
-CMK_F90LIBS=""
-CMK_F90_USE_MODDIR=1
-CMK_F90_MODINC="-I"
-CMK_MOD_EXT="mod"
+if test -n "$ICPC"
+then
+  F90DIR=`which ifort 2> /dev/null`
+  if test -h "$F90DIR"
+  then
+    F90DIR=`readlink $F90DIR`
+  fi
+  if test -x "$F90DIR"
+  then
+    F90DIR=`dirname $F90DIR`
+    Minor=`basename $F90DIR`
+    if test "$Minor" = "intel64"
+    then
+      F90DIR=`dirname $F90DIR`
+      F90LIBDIR="$F90DIR/../lib/$Minor"
+    else
+      F90LIBDIR="$F90DIR/../lib"
+    fi
+    F90MAIN="$F90LIBDIR/for_main.o"
+  fi
+  # for_main.o is important for main() in f90 code
+  CMK_F90MAINLIBS="$F90MAIN "
+  CMK_F90LIBS="-L$F90LIBDIR -lifcore -lifport -lsvml "
+  CMK_F77LIBS="$CMK_F90LIBS"
+  CMK_F90_USE_MODDIR=""
+else
+  CMK_F90LIBS=""
+  CMK_F90_USE_MODDIR=1
+  CMK_F90_MODINC="-I"
+  CMK_MOD_EXT="mod"
+fi
 
 CMK_NO_BUILD_SHARED=true
 
index a9ae337d384f2b13fa9f05cdda0ffa34ba23598b..dbc9b31b4609e955dfb826b1ca544811f9df24ac 100644 (file)
@@ -2,6 +2,7 @@ HPC_SDK="c:\Program Files\Microsoft HPC Pack 2008 SDK"
 HPC_SDK=`cygpath -d "$HPC_SDK"`
 
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE -I `cygpath -u "$HPC_SDK/Include"`"
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CPP_C="$CMK_CC -E"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE  -I `cygpath -u "$HPC_SDK/Include"`"
 CMK_CXXPP=$CMK_CC
index aca1debbd9c0c8dc50e0ad7f82d89cd5e96885b9..3e63bec896908abda74cf16eaea1bfc8d1fc4846 100644 (file)
@@ -8,6 +8,7 @@ fi
 HPC_SDK=`cygpath -d "$HPC_SDK"`
 
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE -I `cygpath -u "$HPC_SDK\Include"`"
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CPP_C="$CMK_CC -E"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE  -I `cygpath -u "$HPC_SDK\Include"`"
 CMK_CXXPP=$CMK_CC
index 8813165feedbcb772615b5f2e07c84959d8fa17a..2562603dbf8381add7b07dcfeec3ca4ff97be2d9 100644 (file)
@@ -1,4 +1,4 @@
-CMK_CPP_CHARM="/lib/cpp -P"
+CMK_CPP_CHARM="/usr/lib/cpp -P"
 CMK_CPP_C="gcc -E "
 CMK_CC="gcc "
 CMK_CXX="g++ "
index 7205b4b05520e324a213b78521308422016037f1..5651e607f91a1ad6090bcedd2cdacb74e27a9d62 100644 (file)
@@ -1,4 +1,5 @@
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CPP_C="$CMK_CC -E"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
 CMK_CXXPP=$CMK_CC
index 7205b4b05520e324a213b78521308422016037f1..5651e607f91a1ad6090bcedd2cdacb74e27a9d62 100644 (file)
@@ -1,4 +1,5 @@
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CPP_C="$CMK_CC -E"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
 CMK_CXXPP=$CMK_CC
index 8813165feedbcb772615b5f2e07c84959d8fa17a..e100271c1d934e4db34e0545c5001a331ea654c7 100644 (file)
@@ -1,4 +1,4 @@
-CMK_CPP_CHARM="/lib/cpp -P"
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CPP_C="gcc -E "
 CMK_CC="gcc "
 CMK_CXX="g++ "
index 55f4c24713851c39e9f452c9cba29d5014cfb7b2..3f2eb1831f6549f24f52acdd3334a5bf745752fd 100644 (file)
@@ -1,4 +1,3 @@
-CMK_CPP_CHARM='/usr/ccs/lib/cpp '
 CMK_CPP_C='cc -E -z muldefs '
 CMK_CC='cc -KPIC -z muldefs '
 CMK_CC_RELIABLE='cc -z muldefs '
index 1ca263258e1c3ebc57d4be4c0fbd136f5b3a9596..c47efe3d088acb4d8527ce2276e190419f1c1eea 100644 (file)
@@ -1,5 +1,5 @@
 CMK_DEFS="-fPIC"
-CMK_CPP_CHARM="/usr/ccs/lib/cpp $CMK_DEFS"
+CMK_CPP_CHARM="/usr/local/bin/cpp -P"
 CMK_CPP_C="gcc -E $CMK_DEFS"
 CMK_CC="gcc $CMK_DEFS"
 CMK_CXX="g++ $CMK_DEFS "
index 7205b4b05520e324a213b78521308422016037f1..a232f074d643f363ebde747e1bf74f130ed6b7ec 100644 (file)
@@ -1,3 +1,4 @@
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
 CMK_CPP_C="$CMK_CC -E"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
index 7205b4b05520e324a213b78521308422016037f1..49b7a5f1ad8bdea46a34072b0e525475fe84f491 100644 (file)
@@ -1,5 +1,6 @@
 CMK_CC="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
 CMK_CPP_C="$CMK_CC -E"
+CMK_CPP_CHARM="/usr/bin/cpp -P"
 CMK_CXX="unix2nt_cc -D_CRT_SECURE_NO_DEPRECATE "
 CMK_CXXPP=$CMK_CC
 CMK_LD="$CMK_CC"
index 3a97f3d3dd0dbc083675c59c13febf283193ad2b..7eadad5f4d471121972b08fba2292123d34d39ef 100644 (file)
@@ -1,4 +1,4 @@
-CMK_CPP_CHARM='/lib/cpp'
+CMK_CPP_CHARM='/lib/cpp -P'
 CMK_CPP_C='gcc -E'
 CMK_CXXPP='g++ -x c++ -E'
 CMK_CC='gcc'
index 07ec971f31c43bbcebf74b24a1b408054a807e6f..a951572b9c7be6df4301761d2168539d77553dec 100644 (file)
@@ -737,7 +737,7 @@ private:
   CkArrayReducer *reducer; //Read-only copy of default reducer
   CkArrayBroadcaster *broadcaster; //Read-only copy of default broadcaster
 public:
-  void flushStates() { CkReductionMgr::flushStates(); CK_ARRAYLISTENER_LOOP(listeners, l->flushState()); }
+  void flushStates() { CkReductionMgr::flushStates(0); CK_ARRAYLISTENER_LOOP(listeners, l->flushState()); }
 #if (defined(_FAULT_MLOG_) || defined(_FAULT_CAUSAL_))
        // the mlogft only support 1D arrays, then returning the number of elements in the first dimension
        virtual int numberReductionMessages(){CkAssert(CkMyPe() == 0);return numInitial.data()[0];}
index 613e3131e643bddd14e72718d5ae8e1850b0e411..6d82761293cce97a5d2d743991c7ec648bd588b9 100644 (file)
@@ -332,8 +332,9 @@ void CkMemCheckPT::pup(PUP::er& p)
   p|ckCheckPTGroupID;          // recover global variable
   p|cpCallback;                        // store callback
   p|where;                     // where to checkpoint
+  p|peCount;
   if (p.isUnpacking()) {
-    recvCount = peCount = 0;
+    recvCount = 0;
 #if CMK_CONVERSE_MPI
     void pingBuddy();
     void pingCheckHandler();
@@ -463,7 +464,7 @@ void CkMemCheckPT::doItNow(int starter, CkCallback &cb)
     CkSendMsgArray(CkIndex_ArrayElement::inmem_checkpoint(NULL),(CkArrayMessage *)msg,entry->aid,entry->index);
   }
     // if my table is empty, then I am done
-  if (len == 0) thisProxy[cpStarter].cpFinish();
+  if (len == 0) contribute(CkCallback(CkReductionTarget(CkMemCheckPT, cpFinish), thisProxy[cpStarter]));
 
   // pack and send proc level data
   sendProcData();
@@ -517,7 +518,7 @@ void CkMemCheckPT::recvProcData(CkProcCheckPTMessage *msg)
   if (CpvAccess(procChkptBuf)) delete CpvAccess(procChkptBuf);
   CpvAccess(procChkptBuf) = msg;
   DEBUGF("[%d] CkMemCheckPT::recvProcData report to %d\n", CkMyPe(), msg->reportPe);
-  thisProxy[msg->reportPe].cpFinish();
+  contribute(CkCallback(CkReductionTarget(CkMemCheckPT, cpFinish), thisProxy[msg->reportPe]));
 }
 
 // ArrayElement call this function to give us the checkpointed data
@@ -538,7 +539,7 @@ void CkMemCheckPT::recvData(CkArrayCheckPTMessage *msg)
     recvCount ++;
     if (recvCount == ckTable.length()) {
       if (where == CkCheckPoint_inMEM) {
-        thisProxy[cpStarter].cpFinish();
+        contribute(CkCallback(CkReductionTarget(CkMemCheckPT, cpFinish), thisProxy[cpStarter]));
       }
       else if (where == CkCheckPoint_inDISK) {
         // another barrier for finalize the writing using fsync
@@ -559,7 +560,7 @@ void CkMemCheckPT::syncFiles(CkReductionMsg *m)
 #if CMK_HAS_SYNC && ! CMK_DISABLE_SYNC
   system("sync");
 #endif
-  thisProxy[cpStarter].cpFinish();
+  contribute(CkCallback(CkReductionTarget(CkMemCheckPT, cpFinish), thisProxy[cpStarter]));
 }
 
 // only is called on cpStarter when checkpoint is done
@@ -568,7 +569,7 @@ void CkMemCheckPT::cpFinish()
   CmiAssert(CkMyPe() == cpStarter);
   peCount++;
     // now that all processors have finished, activate callback
-  if (peCount == 2*(CkNumPes())) {
+  if (peCount == 2) {
     CmiPrintf("[%d] Checkpoint finished in %f seconds, sending callback ... \n", CkMyPe(), CmiWallTimer()-startTime);
     cpCallback.send();
     peCount = 0;
@@ -909,8 +910,8 @@ void CkMemCheckPT::recoverArrayElements()
   CKLOCMGR_LOOP(mgr->doneInserting(););
 
   inRestarting = 0;
- // _crashedNode = -1;
-CpvAccess(_crashedNode) = -1;
 // _crashedNode = -1;
+  CpvAccess(_crashedNode) = -1;
 
   if (CkMyPe() == 0)
     CkStartQD(CkCallback(CkIndex_CkMemCheckPT::finishUp(), thisProxy));
index a07e72db2e3f0d56df5317c5ea7cf122e6bfe049..f95f576df68fc20c9ac32d469ccac80997e20e76 100644 (file)
@@ -21,7 +21,7 @@ module CkMemCheckpoint {
        entry void gotData();
        entry void recvProcData(CkProcCheckPTMessage *);
        entry void syncFiles(CkReductionMsg *);
-       entry void cpFinish();
+       entry [reductiontarget] void cpFinish();
        entry void report();
        // restart
         entry [expedited] void restart(int);
index d0d420492fd534f581aa4e58cc1c8c67e8d10d3c..c09fea060a4402e12d737d3cb0e7bb70772f191e 100644 (file)
@@ -221,14 +221,14 @@ CkReductionMgr::CkReductionMgr(CkMigrateMessage *m) :CkGroupInitCallback(m)
   DEBR((AA"In reductionMgr migratable constructor at %d \n"AB,this));
 }
 
-void CkReductionMgr::flushStates()
+void CkReductionMgr::flushStates(int isgroup)
 {
   // CmiPrintf("[%d] CkReductionMgr::flushState\n", CkMyPe());
   redNo=0;
   completedRedNo = -1;
   inProgress=CmiFalse;
   creating=CmiFalse;
-  gcount=lcount=0;
+  if (!isgroup) gcount=lcount=0;    // array reduction group needs to reset to 0
   startRequested=CmiFalse;
   nContrib=nRemote=0;
   maxStartRequest=0;
index f732547ef4fc609f558ee0bbe4453e60bc2c70fe..6968464b564148979db04c5c0c50254ac792857a 100644 (file)
@@ -149,7 +149,7 @@ public:
        void endArrayReduction();
 
        virtual CmiBool isReductionMgr(void){ return CmiTrue; }
-       virtual void flushStates();
+       virtual void flushStates(int isgroup);
        /*FAULT_EVAC: used to get the gcount on a processor when 
                it is evacuated.
                TODO: It needs to be fixed as it should return the gcount
@@ -414,7 +414,7 @@ class Group : public CkReductionMgr
        virtual int isNodeGroup() { return 0; }
        virtual void pup(PUP::er &p);
        virtual void flushStates() {
-               CkReductionMgr::flushStates();
+               CkReductionMgr::flushStates(1);
                reductionInfo.redNo = 0;
        }
        virtual void CkAddThreadListeners(CthThread tid, void *msg);
index 20ec91465e2febff5262749d7a423a1260c5b152..7a086bd5436a944b3599e12189e47fc8ba1a1d33 100644 (file)
@@ -4,7 +4,8 @@ CHARMINC=.
 SIMPLE_DIRS = completion cache sparseContiguousReducer tcharm ampi idxl \
               parmetis multiphaseSharedArrays fem ParFUM \
               ifem armci collide mblock barrier irecv netfem liveViz \
-              taskGraph search datatransfer MeshStreamer pose
+              taskGraph search datatransfer MeshStreamer pose \
+              state_space_searchengine
 DIRS = $(SIMPLE_DIRS) pythonCCS
 
 .PHONY: $(DIRS)
index 0ea84af2bd9295be900cfb1cb62a6a6d423b07d5..4ead0a46cc216718c8ed4651e65377d72416f980 100644 (file)
@@ -18,7 +18,7 @@ class MeshLocation {
   MeshStreamerMessageType msgType;
 };
 
-#define HASH_LOCATIONS
+//#define HASH_LOCATIONS
 
 #ifdef HASH_LOCATIONS
 #include <map>
@@ -66,7 +66,7 @@ public:
        destinationPes[index] = destinationPe;
     }
 
-    dtype getDataItem(const int index) {
+    dtype &getDataItem(const int index) {
         return data[index];
     }
 };
@@ -75,7 +75,7 @@ template <class dtype>
 class MeshStreamerClient : public Group {
  public:
      virtual void receiveCombinedData(MeshStreamerMessage<dtype> *msg);
-     virtual void process(dtype data)=0; 
+     virtual void process(dtype &data)=0; 
 };
 
 template <class dtype>
@@ -135,7 +135,7 @@ public:
     ~MeshStreamer();
 
       // entry
-    void insertData(const dtype &dataItem, const int destinationPe); 
+    void insertData(dtype &dataItem, const int destinationPe); 
     void doneInserting();
     void receiveAggregateData(MeshStreamerMessage<dtype> *msg);
     // void receivePersonalizedData(MeshStreamerMessage<dtype> *msg);
@@ -355,7 +355,7 @@ void MeshStreamer<dtype>::storeMessage(MeshStreamerMessage<dtype> ** const messa
 }
 
 template <class dtype>
-void MeshStreamer<dtype>::insertData(const dtype &dataItem, const int destinationPe) {
+void MeshStreamer<dtype>::insertData(dtype &dataItem, const int destinationPe) {
   static int count = 0;
 
   if (destinationPe == CkMyPe()) {
@@ -414,7 +414,7 @@ void MeshStreamer<dtype>::finish(CkReductionMsg *msg) {
     userCallback_ = CkCallback();      // nullify the current callback
   }
 
-  delete msg; 
+  //  delete msg; 
 }
 
 
@@ -427,7 +427,7 @@ void MeshStreamer<dtype>::receiveAggregateData(MeshStreamerMessage<dtype> *msg)
 
   for (int i = 0; i < msg->numDataItems; i++) {
     destinationPe = msg->destinationPes[i];
-    dtype dataItem = msg->getDataItem(i);
+    dtype &dataItem = msg->getDataItem(i);
     determineLocation(destinationPe, destinationCoordinates);
 #ifdef DEBUG_STREAMER
     CkAssert(destinationCoordinates.planeIndex == myPlaneIndex_);
@@ -570,7 +570,7 @@ template <class dtype>
 void MeshStreamer<dtype>::flushDirect(){
 
     if (!isPeriodicFlushEnabled_ || 
-       CkWallTimer() - timeOfLastSend_ >= progressPeriodInMs_) {
+       1000 * (CkWallTimer() - timeOfLastSend_) >= progressPeriodInMs_) {
       flushBuckets(planeBuffers_, numPlanes_);
       flushBuckets(columnBuffers_, numColumns_);
       flushBuckets(personalizedBuffers_, numRows_);
index 1fbae0d56d66d6cc0697fca02a8e0125355ce725..e0b1e7093f06bf103fa1659b8650d9b1f4edc154 100644 (file)
@@ -51,7 +51,7 @@ class CkMulticastMgr: public CkDelegateMgr
     public:
         // ------------------------- Cons/Des-tructors ------------------------
         CkMulticastMgr(CkMigrateMessage *m)  {}
-        CkMulticastMgr(int _factor = 2, unsigned int _split_size = 32768, unsigned int _split_threshold = 32768):
+        CkMulticastMgr(int _factor = 2, unsigned int _split_size = 8192, unsigned int _split_threshold = 8192):
             factor(_factor),
             split_size(_split_size),
             split_threshold(_split_threshold) {}
similarity index 51%
rename from examples/charm++/state_space_searchengine/searchengineLib/Makefile
rename to src/libs/ck-libs/state_space_searchengine/Makefile
index f32c41bee0156705c39f5826e3b650f88d6da6ad..3ca9d59308546524e29bf9fd1cee5df0a591dfa7 100644 (file)
@@ -1,46 +1,44 @@
 
-include ../Makefile.common
+#override OPTS += -DUSING_CONTROLPOINTS
+#override OPTS += -DUSEBITPRIORITY
 
-# remove -DBRANCHBOUND so that it can build a non-branchbound library
-override CHARMC := $(subst -DBRANCHBOUND, , $(CHARMC))
+###########  Don't change below this line ############
+
+CDIR=../../../..
+CHARMC=$(CDIR)/bin/charmc $(OPTS)
 
+# remove -DBRANCHBOUND so that it can build a non-branchbound library
+# override CHARMC := $(subst -DBRANCHBOUND, , $(CHARMC))
 
+HEADERS = searchEngine.h searchEngine_impl.h searchEngine.decl.h
 OBJS = searchEngine.o
 
 LIB1 = libmodulesearchEngine.a
-
 LIB2 = libmodulesearchEngine_bound.a
 
-#all: main main_prj
-all: lib
+all: $(CDIR)/lib/$(LIB1)   $(CDIR)/lib/$(LIB2)
+       /bin/cp $(HEADERS) $(CDIR)/include
 
-main: searchEngine.o main.o 
-       $(CHARMC) -language charm++  main.o searchEngine.o -o main
+$(CDIR)/lib/$(LIB1): $(LIB1)
+       /bin/cp $(LIB1)  $(CDIR)/lib/$(LIB1)
 
-main_prj: searchEngine.o main.o 
-       $(CHARMC) -language charm++  -tracemode projections main.o searchEngine.o -o main_prj
+$(CDIR)/lib/$(LIB2): $(LIB2)
+       /bin/cp $(LIB2)  $(CDIR)/lib/$(LIB2)
+       /bin/cp searchEngine_bound.decl.h  $(CDIR)/include
 
-main.decl.h: main.ci
-       $(CHARMC) main.ci
-
-main.o: main.C main.decl.h
-       $(CHARMC) -c  main.C
-
-searchEngine.o: searchEngine_impl.h searchEngine.h searchEngine.C searchEngine.decl.h
+searchEngine.o: $(HEADERS) searchEngine.C
        $(CHARMC) -c  searchEngine.C
 
 searchEngine.decl.h: searchEngine.ci
        $(CHARMC) -E searchEngine.ci
 
-lib: $(LIB1) $(LIB2)
-
 $(LIB1):  $(OBJS)
        $(CHARMC) -o $(LIB1) $(OBJS)
 
 $(LIB2):  searchEngine_bound.o
        $(CHARMC) -o $(LIB2)  searchEngine_bound.o
 
-searchEngine_bound.o: searchEngine_impl.h searchEngine.h searchEngine.C searchEngine.decl.h searchEngine.ci
+searchEngine_bound.o: $(HEADERS) searchEngine.C searchEngine.ci
        sed -e 's/module searchEngine/module searchEngine_bound/' searchEngine.ci > searchEngine_bound.ci && $(CHARMC) -DBRANCHBOUND -E  searchEngine_bound.ci
        $(CHARMC) -DBRANCHBOUND -c  searchEngine.C -o searchEngine_bound.o
 
similarity index 98%
rename from examples/charm++/state_space_searchengine/searchengineLib/searchEngine.h
rename to src/libs/ck-libs/state_space_searchengine/searchEngine.h
index 611297f16cf7a70dbe931c0651af16aed67822da..de2bd35ba1a204be1fbccca71eaf5bc58f4736de 100644 (file)
@@ -10,6 +10,8 @@
 #include "charm++.h"
 #include "cmipool.h"
 
+#define ADAPTIVE     1
+
 class Solver;
 class StateBase;
 class SearchNodeMsg;
@@ -64,7 +66,7 @@ extern int se_statesize;
 
 
 #ifdef BRANCHBOUND
-#ifndef ADAPTIVE
+#if ! ADAPTIVE
 #define SE_Register(state, f1, f2, f3, f4, f5)  \
     void registerSE() {    \
       SE_register(f1, f2, f3, f4, f5);   \
@@ -125,7 +127,7 @@ extern int se_statesize;
     void registerSE() {    \
       SE_register(f1, f2, f3, f4);   \
     }
-#ifndef ADAPTIVE
+#if ! ADAPTIVE
 #define SE_Register(state, f1, f2, f3, f4)  \
     registerSE_DEF(state, f1, f2, f3, f4)  \
     void createMultipleChildren(StateBase *parent, SequentialSolver* solver, bool parallel) {  \
index a263ef7c72fbfe8260ad063f7bde5640de2348bd..aad0aba1ce2392f19910d442113e55544c26fe56 100644 (file)
@@ -61,7 +61,7 @@ void check_test(int argc, char** argv) {
   }
 
 #if ! CMK_SMP
-  const int s = 1*1024*1024;
+  const int s = 8*1024*1024;
   void *buf1 = CmiAlloc(s);
   CmiUInt8 mem_before = CmiMemoryUsage();
   void *buf2 = CmiAlloc(s);