minor changes for cuda 3.2
authorLawrence Cayton <lcayton@tuebingen.mpg.de>
Fri, 3 Dec 2010 12:07:27 +0000 (13:07 +0100)
committerLawrence Cayton <lcayton@tuebingen.mpg.de>
Fri, 3 Dec 2010 12:07:27 +0000 (13:07 +0100)
Makefile
driver.cu
rbc.cu
readme.txt

index c696224..3573406 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 CC=gcc
 NVCC=nvcc
 CCFLAGS=
-NVCCFLAGS= -DCUDA_FORCE_API_VERSION=3010
+NVCCFLAGS=
 #other flags: -deviceemu -arch=sm_20 --ptxas-options=-v
 #These are useful when debugging sometimes.  
 LINKFLAGS=-lcuda  -lm
index 95918d7..ff05bb1 100644 (file)
--- a/driver.cu
+++ b/driver.cu
@@ -40,21 +40,15 @@ int main(int argc, char**argv){
   
   parseInput(argc,argv);
   
-  cuInit(0);
   printf("Using GPU #%d\n",deviceNum);
   if(cudaSetDevice(deviceNum) != cudaSuccess){
     printf("Unable to select device %d.. exiting. \n",deviceNum);
     exit(1);
   }
   
-  unsigned int memFree, memTot;
-  CUcontext pctx;
-  unsigned int flags=0;
-  int device;
-  cudaGetDevice(&device);
-  cuCtxCreate(&pctx,flags,device);
-  cuMemGetInfo(&memFree, &memTot);
-  printf("GPU memory free = %u/%u (MB) \n",memFree/(1024*1024),memTot/(1024*1024));
+  size_t memFree, memTot;
+  cudaMemGetInfo(&memFree, &memTot);
+  printf("GPU memory free = %lu/%lu (MB) \n",(unsigned long)memFree/(1024*1024),(unsigned long)memTot/(1024*1024));
 
   data  = (real*)calloc( (n+m)*d, sizeof(*data) );
   x.mat = (real*)calloc( PAD(n)*PAD(d), sizeof(*(x.mat)) );
@@ -104,7 +98,9 @@ int main(int argc, char**argv){
   }
   
   evalKNNerror(x,q,kNNsRBC);
-
+  
+  cudaThreadExit();
+  
   free(NNs);
   free(NNsK.mat);
   free(kNNsRBC.mat);
diff --git a/rbc.cu b/rbc.cu
index 98e676e..61fad14 100644 (file)
--- a/rbc.cu
+++ b/rbc.cu
@@ -135,9 +135,8 @@ void buildRBC(const matrix x, rbcStruct *rbcS, unint numReps, unint s){
   rbcS->groupCount = (uint*)calloc( PAD(numReps), sizeof(*rbcS->groupCount) );
   
   //Figure out how much fits into memory
-  unint memFree, memTot;
-  //size_t memFree, memTot;
-  cuMemGetInfo(&memFree, &memTot);
+  size_t memFree, memTot;
+  cudaMemGetInfo(&memFree, &memTot);
   memFree = (unint)(((float)memFree)*MEM_USABLE);
   /* mem needed per rep:
    *  n*sizeof(real) - dist mat
@@ -149,7 +148,7 @@ void buildRBC(const matrix x, rbcStruct *rbcS, unint numReps, unint s){
    */
   unint ptsAtOnce = DPAD(memFree/((n+1)*sizeof(real) + n*sizeof(char) + (n+1)*sizeof(unint) + 2*MEM_USED_IN_SCAN(n)));
   if(!ptsAtOnce){
-    fprintf(stderr,"error: %d is not enough memory to build the RBC.. exiting\n", memFree);
+    fprintf(stderr,"error: %lu is not enough memory to build the RBC.. exiting\n", (unsigned long)memFree);
     exit(1);
   }
 
index 4c5ade0..edd6399 100644 (file)
@@ -151,10 +151,3 @@ followed by another make.
   You can get around this in Linux by switching out of X-Windows (often 
   CTRL-ALT-F1 does the trick) and running the code directly from the
   terminal.
-
-* If you have a graphics card with more than 4GB of memory (eg a Tesla
-  2070), and use a recent version of CUDA (at least 3.2), then an
-  optimization is possible.  In particular, removing the 
-  -DCUDA_FORCE_API_VERSION=3010        
-  flag and making some very minor code adjustments will enhance the
-  build performance.