Selaa lähdekoodia

Rename the MAXCUDADEVS constant into STARPU_MAXCUDADEVS and add an option to
modify it at configure time (--enable-maxcudadev).

Cédric Augonnet 15 vuotta sitten
vanhempi
commit
88147be9d1

+ 8 - 0
configure.ac

@@ -104,6 +104,14 @@ fi
 #                                                                             #
 ###############################################################################
 
+AC_MSG_CHECKING(maximum number of CUDA devices)
+AC_ARG_ENABLE(maxcudadev, [AS_HELP_STRING([--enable-maxcudadev=<number>],
+			[maximum number of CUDA devices])],
+			nmaxcudadev=$enableval, nmaxcudadev=4)
+AC_MSG_RESULT($nmaxcudadev)
+AC_DEFINE_UNQUOTED(STARPU_MAXCUDADEVS, [$nmaxcudadev], 
+		[maximum number of CUDA devices])
+
 AC_ARG_ENABLE(cuda, [AS_HELP_STRING([--disable-cuda],
 		[do not use CUDA device(s)])],, [enable_cuda=maybe])
 

+ 2 - 2
include/starpu-perfmodel.h

@@ -19,8 +19,8 @@
 
 #include <stdio.h>
 #include <pthread.h>
+#include <starpu.h>
 #include <starpu_config.h>
-#include <starpu-task.h> // for MAXCUDADEVS
 
 #ifdef __cplusplus
 extern "C" {
@@ -40,7 +40,7 @@ enum starpu_perf_archtype {
 	STARPU_CORE_DEFAULT = 0,
 	STARPU_CUDA_DEFAULT = 1,
 	/* STARPU_CUDA_DEFAULT + devid */
-	STARPU_GORDON_DEFAULT = STARPU_CUDA_DEFAULT + MAXCUDADEVS
+	STARPU_GORDON_DEFAULT = STARPU_CUDA_DEFAULT + STARPU_MAXCUDADEVS
 };
 
 #define NARCH_VARIATIONS	(STARPU_GORDON_DEFAULT+1)

+ 0 - 5
include/starpu-task.h

@@ -21,11 +21,6 @@
 #include <starpu_config.h>
 #include <starpu.h>
 
-/* this is a randomly choosen value ... */
-#ifndef MAXCUDADEVS
-#define MAXCUDADEVS     4
-#endif
-
 #ifdef USE_CUDA
 #include <cuda.h>
 #endif

+ 1 - 0
include/starpu_config.h.in

@@ -32,5 +32,6 @@
 #undef HAVE_FFTWL
 
 #undef STARPU_NMAXBUFS
+#undef STARPU_MAXCUDADEVS
 
 #endif

+ 1 - 1
src/core/perfmodel/perfmodel_bus.c

@@ -40,7 +40,7 @@ static double latency_matrix[MAXNODES][MAXNODES] = {{ -1.0}};
 static unsigned was_benchmarked = 0;
 static int ncuda = 0;
 
-static int affinity_matrix[MAXCUDADEVS][MAXCPUS];
+static int affinity_matrix[STARPU_MAXCUDADEVS][MAXCPUS];
 
 /* Benchmarking the performance of the bus */
 

+ 1 - 1
src/core/perfmodel/perfmodel_history.c

@@ -469,7 +469,7 @@ void starpu_perfmodel_get_arch_name(enum starpu_perf_archtype arch, char *archna
 		snprintf(archname, maxlen, "core");
 	}
 	else if ((STARPU_CUDA_DEFAULT <= arch)
-		&& (arch < STARPU_CUDA_DEFAULT + MAXCUDADEVS))
+		&& (arch < STARPU_CUDA_DEFAULT + STARPU_MAXCUDADEVS))
 	{
 		int devid = arch - STARPU_CUDA_DEFAULT;
 		snprintf(archname, maxlen, "cuda_%d", devid);

+ 2 - 2
src/core/topology.c

@@ -182,11 +182,11 @@ static int _starpu_init_machine_config(struct machine_config_s *config,
 
 		if (explicitval < 0) {
 			config->ncudagpus =
-				STARPU_MIN(get_cuda_device_count(), MAXCUDADEVS);
+				STARPU_MIN(get_cuda_device_count(), STARPU_MAXCUDADEVS);
 		} else {
 			/* use the specified value */
 			config->ncudagpus = (unsigned)explicitval;
-			STARPU_ASSERT(config->ncudagpus <= MAXCUDADEVS);
+			STARPU_ASSERT(config->ncudagpus <= STARPU_MAXCUDADEVS);
 		}
 		STARPU_ASSERT(config->ncudagpus + config->nworkers <= STARPU_NMAXWORKERS);
 	}

+ 1 - 1
src/drivers/cuda/driver_cuda.c

@@ -59,7 +59,7 @@ unsigned get_cuda_device_count(void)
 void _starpu_init_cuda(void)
 {
 	ncudagpus = get_cuda_device_count();
-	assert(ncudagpus <= MAXCUDADEVS);
+	assert(ncudagpus <= STARPU_MAXCUDADEVS);
 }
 
 static int execute_job_on_cuda(job_t j, struct worker_s *args)