got rid of GSL requirement
authorLawrence Cayton <lcayton@tuebingen.mpg.de>
Fri, 19 Nov 2010 20:03:45 +0000 (21:03 +0100)
committerLawrence Cayton <lcayton@tuebingen.mpg.de>
Fri, 19 Nov 2010 20:03:45 +0000 (21:03 +0100)
Makefile
brute.cu
brute.h

index 750a214..ff0d1f2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,8 +3,10 @@ NVCC=nvcc
 CCFLAGS=
 NVCCFLAGS= --ptxas-options=-v
 #other flags: -deviceemu -arch=sm_20 --compiler-bindir=/usr/bin/gcc-4.3
-LINKFLAGS=-lcuda -lgsl -lgslcblas -lm
-#other linkflags: 
+#These are useful when debugging sometimes.  
+LINKFLAGS=-lcuda  -lm
+#other linkflags: -lgsl -lgslcblas 
+# lgsl and lgslcblas are required if you want to use the GSL. 
 SOURCES=
 CUSOURCES= driver.cu utils.cu utilsGPU.cu rbc.cu brute.cu kernels.cu kernelWrap.cu sKernel.cu sKernelWrap.cu
 OBJECTS=$(SOURCES:.c=.o)
index ad106f6..7041f28 100644 (file)
--- a/brute.cu
+++ b/brute.cu
@@ -14,7 +14,7 @@
 #include "brute.h"
 #include<stdio.h>
 #include<cuda.h>
-#include<gsl/gsl_sort.h>
+//#include<gsl/gsl_sort.h>
 
 void bruteRangeCount(matrix x, matrix q, real *ranges, unint *cnts){
   matrix dx, dq;
@@ -121,32 +121,36 @@ void bruteCPU(matrix X, matrix Q, unint *NNs){
 }
 
 
-void bruteKCPU(matrix x, matrix q, intMatrix NNs){
-  int i, j;
-
-  float **d;
-  d = (float**)calloc(q.pr, sizeof(*d));
-  size_t **t;
-  t = (size_t**)calloc(q.pr, sizeof(*t));
-  for( i=0; i<q.pr; i++){
-    d[i] = (float*)calloc(x.pr, sizeof(**d));
-    t[i] = (size_t*)calloc(x.pr, sizeof(**t));
-  }
-
-  //#pragma omp parallel for private(j)
-  for( i=0; i<q.r; i++){
-    for( j=0; j<x.r; j++)
-      d[i][j] = distVec( q, x, i, j );
-    gsl_sort_float_index(t[i], d[i], 1, x.r);
-    for ( j=0; j<K; j++)
-      NNs.mat[IDX( i, j, NNs.ld )] = t[i][j];
-  }
-
-  for( i=0; i<q.pr; i++){
-    free(t[i]);
-    free(d[i]);
-  }
-  free(t);
-  free(d);
-}
+//The following method works properly, but requires the GNU scientific
+//library.  If you want to use it, uncomment the code, uncomment the include
+//above, and adjust the makefile.  It was used for debugging purposes, but
+//is not required by anything else.
+
+/* void bruteKCPU(matrix x, matrix q, intMatrix NNs){ */
+/*   int i, j; */
+
+/*   float **d; */
+/*   d = (float**)calloc(q.pr, sizeof(*d)); */
+/*   size_t **t; */
+/*   t = (size_t**)calloc(q.pr, sizeof(*t)); */
+/*   for( i=0; i<q.pr; i++){ */
+/*     d[i] = (float*)calloc(x.pr, sizeof(**d)); */
+/*     t[i] = (size_t*)calloc(x.pr, sizeof(**t)); */
+/*   } */
+
+/*   for( i=0; i<q.r; i++){ */
+/*     for( j=0; j<x.r; j++) */
+/*       d[i][j] = distVec( q, x, i, j ); */
+/*     gsl_sort_float_index(t[i], d[i], 1, x.r); */
+/*     for ( j=0; j<K; j++) */
+/*       NNs.mat[IDX( i, j, NNs.ld )] = t[i][j]; */
+/*   } */
+
+/*   for( i=0; i<q.pr; i++){ */
+/*     free(t[i]); */
+/*     free(d[i]); */
+/*   } */
+/*   free(t); */
+/*   free(d); */
+/* } */
 #endif
diff --git a/brute.h b/brute.h
index a0a5bb3..d551aca 100644 (file)
--- a/brute.h
+++ b/brute.h
@@ -11,5 +11,5 @@ void bruteRangeCount(matrix,matrix,real*,unint*);
 void bruteSearch(matrix,matrix,unint*);
 void bruteCPU(matrix,matrix,unint*);
 void bruteK(matrix,matrix,intMatrix);
-void bruteKCPU(matrix,matrix,intMatrix);
+//void bruteKCPU(matrix,matrix,intMatrix);
 #endif