Fix MPI interoperation example and add it to test script 51/5051/4
authorEric Mikida <epmikida@hpccharm.com>
Mon, 1 Apr 2019 20:29:28 +0000 (16:29 -0400)
committerRaghavendra K <raghavendra066@gmail.com>
Thu, 4 Apr 2019 14:51:49 +0000 (09:51 -0500)
Change-Id: I82a5c2ae77661b111ac465935e314b63cc133de1

examples/charm++/Makefile
examples/charm++/mpi-coexist/Makefile
examples/charm++/mpi-coexist/Makefile.in [deleted file]
examples/charm++/mpi-coexist/libs/hello/Makefile
examples/charm++/mpi-coexist/libs/hello/hello.C
examples/charm++/mpi-coexist/libs/hi/Makefile
examples/charm++/mpi-coexist/libs/kNeighbor/Makefile
examples/charm++/mpi-coexist/multirun.cpp
examples/charm++/mpi-coexist/multirun_time.cpp

index d4a8071e11a35b150bcba34b055232035e4153bb..f7661fe8f3037b193135434b498bea4fdf448b7b 100644 (file)
@@ -18,6 +18,7 @@ DIRS = \
   load_balancing \
   manyToMany \
   matmul \
+  mpi-coexist \
   namespace \
   piArray \
   PUP \
index d2fa64a347cbe075a1738025a9cbcfba0f4fcfb1..b9460166727beb69c8f1e77a8581d43a2f39ecae 100644 (file)
@@ -1,28 +1,28 @@
-include Makefile.in
+-include ../../common.mk
+CHARMC=../../../bin/charmc $(OPTS)
+
 all: multirun multirun_time
 
 #Charm++ libraries to be used for Interoperation
 LIBS=libmodulehi.a libmodulehello.a libmodulekNeighbor.a
 
 multirun: multirun.cpp $(LIBS)
-       $(CXX) -c multirun.cpp -o multirun.o -I$(CHARMDIR)/include
-       $(CHARMC) -mpi -o multirun multirun.o -L./ -module hello -module kNeighbor -module CommonLBs $(MPI_LIBS)
+       $(CHARMC) -c++ mpicxx -c multirun.cpp -o multirun.o -I../../../include
+       $(CHARMC) -ld++ mpicxx -mpi -o multirun multirun.o -L./ -module hello -module kNeighbor -module CommonLBs
 
 multirun_time: multirun_time.cpp $(LIBS)
-       $(CXX) -c multirun_time.cpp -o multirun_time.o -I$(CHARMDIR)/include
-       $(CHARMC) -mpi -nomain-module -o multirun_time multirun_time.o -L./ -module hello -module hi -module kNeighbor -module CommonLBs $(MPI_LIBS)
+       $(CHARMC) -c++ mpicxx -c multirun_time.cpp -o multirun_time.o
+       $(CHARMC) -ld++ mpicxx -mpi -nomain-module -o multirun_time multirun_time.o -L./ -module hello -module hi -module kNeighbor -module CommonLBs
 
 $(LIBS):  
-       cd libs;make;
-
-clean: clear
-       cd libs;make clean;cd ..;
-       rm -f multirun *.o *.a charmrun
+       make -C libs
 
-clear:
-       rm -f PI*
+clean:
+       make -C libs clean
+       rm -f multirun multirun_time *.o *.a charmrun
 
 test: all
        mpirun -np 16 ./multirun
        mpirun -np 16 ./multirun +balancer GreedyLB +LBDebug 1
+       mpirun -np 16 ./multirun_time
 
diff --git a/examples/charm++/mpi-coexist/Makefile.in b/examples/charm++/mpi-coexist/Makefile.in
deleted file mode 100644 (file)
index b4d8164..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#multirun - works with MPI based Charm++ only since space division for Charm++
-#part only works for MPI based Charm++.
-
-#multirun_time - works on MPI, PAMILRTS, and GNI.
-
-#to run on BG/Q, add this argument to the runjob command: --envs PAMI_CLIENTS=MPI,Converse
-
-OPTS = -O3 
-CHARMDIR=../../..
-CHARMC=$(CHARMDIR)/bin/charmc $(OPTS)
-
-MPI_LIBS=""
-ifeq ($(TARGET),gni)
-       CXX=CC -std=c++0x $(OPTS)
-else
-ifeq ($(TARGET),bgq)
-       CXX=mpicxx -qlanglvl=variadictemplates $(OPTS)
-       BGQ_INSTALL=/bgsys/drivers/ppcfloor
-       MPI_LIBS=-L$(BGQ_INSTALL)/comm/lib -lmpich-xl -lopa-xl -lmpl-xl -ldl -L$(BGQ_INSTALL)/comm/sys-fast/lib -lpami-gcc -L$(BGQ_INSTALL)/spi/lib -lSPI -lSPI_cnk -lpthread -lrt
-else
-       CXX=mpicxx -std=c++0x $(OPTS)
-endif
-endif
index d983b5d3a2c05bb1eb4a102a0546082b49916090..e8ebab3c5eb7a38757b3a6baf518ace01df465c0 100644 (file)
@@ -1,5 +1,5 @@
-include ../../Makefile.in
-CHARMC:=../../${CHARMC}
+-include ../../../../common.mk
+CHARMC=../../../../../bin/charmc $(OPTS)
 
 all: libmodulehello.a
 
index 6e1da7359b7d845557125ec4b1ccd114b227e2b8..a2feea4756c56897ece94aa0c575afe1c206563a 100644 (file)
@@ -61,7 +61,7 @@ void HelloStart(int elems)
 {
   if(CkMyPe() == 0) {
     CkPrintf("HelloStart - Starting lib by calling constructor of MainHello\n");
-    CProxy_MainHello mainhello = CProxy_MainHello::ckNew(elems);
+    CProxy_MainHello mainhello = CProxy_MainHello::ckNew(elems, 0);
   }
   StartCharmScheduler();
 }
index 29bed73c1e1f34c5215d45a5b5cff3f2841f5c53..760f077ad81a0a68f0c20d69ede7b2fe6ed85775 100644 (file)
@@ -1,5 +1,5 @@
-include ../../Makefile.in
-CHARMC:=../../${CHARMC}
+-include ../../../../common.mk
+CHARMC=../../../../..//bin/charmc $(OPTS)
 
 all: libmodulehi.a
 
index 8bf642e46e3a6080d5401f736452542cf42fa76d..f04bf862754b30f1a35dc516a51bb2fc6641b8d0 100644 (file)
@@ -1,5 +1,5 @@
-include ../../Makefile.in
-CHARMC:=../../${CHARMC}
+-include ../../../../common.mk
+CHARMC=../../../../..//bin/charmc $(OPTS)
 
 all: libmodulekNeighbor.a
 
index 9cb201e6352ecbecdd3f184f722fa3e5ca2aa8c4..3b7309fbe6535469ce2d94e71036e30cf6bb6487 100644 (file)
@@ -30,6 +30,8 @@ int main(int argc, char **argv){
     return 1;
   }
 
+// Currently, only MPI builds support this style of interop
+#if CMK_CONVERSE_MPI
   //splitting WORLD into 2 sets
   MPI_Comm_split(MPI_COMM_WORLD, peid%2, peid, &newComm);
 
@@ -77,6 +79,11 @@ int main(int argc, char **argv){
 
   //final synchronization
   MPI_Barrier(MPI_COMM_WORLD);
+#else
+  if (peid == 0) {
+    printf("Test is currently a no-op for non-MPI builds\n");
+  }
+#endif
 
   MPI_Finalize();
   return 0;  
index f75f01ed34d721b09bdf32f3527fb87066bcf220..f7ef28010ade0d956f502c23e9892693e5866670 100644 (file)
@@ -31,6 +31,8 @@ int main(int argc, char **argv){
     return 1;
   }
 
+// Currently, only MPI builds support this style of interop
+#if CMK_CONVERSE_MPI
   MPI_Comm_split(MPI_COMM_WORLD, 1, peid, &newComm);
 
   //initialize Charm for each set
@@ -72,7 +74,12 @@ int main(int argc, char **argv){
 
   //final synchronization
   MPI_Barrier(MPI_COMM_WORLD);
-  
+#else
+  if (peid == 0) {
+    printf("This test program is a no-op with non-MPI builds\n");
+  }
+#endif
+
   MPI_Finalize();
   return 0;  
 }