Modified GPU Manager so that quiescence will not be detected in situations
authorLukasz Wesolowski <wesolwsk@talent.cs.illinois.edu>
Thu, 28 Apr 2011 21:49:54 +0000 (16:49 -0500)
committerLukasz Wesolowski <wesolwsk@talent.cs.illinois.edu>
Thu, 28 Apr 2011 21:49:54 +0000 (16:49 -0500)
when CPUs have no work but GPUs are still executing.

src/arch/cuda/hybridAPI/Makefile
src/arch/cuda/hybridAPI/wrqueue.cu
src/ck-core/charm++.h
src/ck-core/cklocation.h

index 639071004b1c11b00ea592586d92ed352cd31b6e..b8e10313446fe54fda1fbc2bf9df2730daf3142c 100644 (file)
@@ -1,5 +1,5 @@
-CUDA_DIR=/usr/local/cuda/cuda
-NVIDIA_CUDA_SDK=/usr/local/NVIDIA_CUDA_SDK
+CUDA_DIR=/usr/local/cuda
+NVIDIA_CUDA_SDK=/usr/local/NVIDIA_GPU_Computing_SDK/C
 CHARMDIR=../../
 CHARMC=$(CHARMDIR)/bin/charmc
 
@@ -26,7 +26,7 @@ hybridapi.o: cuda-hybrid-api.cu cuda-hybrid-api.h
        $(NVCC) $(NVCC_FLAGS) $(NVCC_INC) -o hybridapi.o cuda-hybrid-api.cu
 
 wrqueue.o: wrqueue.cu wrqueue.h wr.h 
-       $(NVCC) $(NVCC_FLAGS) $(NVCC_INC) -o wrqueue.o wrqueue.cu 
+       $(NVCC) $(NVCC_FLAGS) $(NVCC_INC) -o wrqueue.o wrqueue.cu
 
 clean:
        rm -f *.o *.a 
index 566fc5649b3eeae2b1005b1c02e6f6419099a116..00cc2b5d28eb003e8d59e925bb3a22bcff194a81 100644 (file)
@@ -8,6 +8,7 @@
  *
  */
 
+#include "ck.h"
 #include "cuda-hybrid-api.h"
 #include "wrqueue.h"
 #include "stdio.h"
@@ -77,6 +78,8 @@ void enqueue(workRequestQueue *q, workRequest *wr) {
 
   q->size++; 
 
+  CpvAccess(_qd)->create();
+
 #ifdef GPU_WRQ_VERBOSE
   printf("(%d) ENQ size: %d\n", CmiMyPe(), q->size);
 #endif
@@ -95,6 +98,9 @@ void dequeue(workRequestQueue *q) {
 #ifdef GPU_WRQ_VERBOSE
   printf("(%d) DEQ size: %d\n", CmiMyPe(), q->size);
 #endif
+
+  CpvAccess(_qd)->process();
+
 }
 
 int deleteWRqueue(workRequestQueue *q) {
index 9f2296fa87459ab4a1bac9b63c0330d275fb7a52..225291a4781db2fae80ba17c8e2a535ab27c90a0 100644 (file)
@@ -29,7 +29,9 @@ public: static int __idx;
 #include "ckbitvector.h"
 #include "init.h"
 #include "debug-charm.h"
+#ifndef __CUDACC__
 #include "simd.h"
+#endif
 
 PUPbytes(CkChareID)
 PUPbytes(CkGroupID)
index a479ee3aca12100d18d679e0ec8301842bb3e578..c817b5f612e2e093e862962734526c994b9fe888 100644 (file)
@@ -408,7 +408,7 @@ template <class T>
 class CkMigratableListT : public CkMigratableList {
        typedef CkMigratableList super;
 public:
-       inline void put(T *v,int atIdx) {super::put((void *)v,atIdx);}
+       inline void put(T *v,int atIdx) {super::put((CkMigratable *)v,atIdx);}
        inline T *get(int localIdx) {return (T *)super::get(localIdx);}
        inline T *next(int &from) {return (T *)super::next(from);}
 };