Explorar o código

Fix reporting CUDA workers when using several workers per CUDA

Samuel Thibault %!s(int64=8) %!d(string=hai) anos
pai
achega
5e61b183a5
Modificáronse 3 ficheiros con 6 adicións e 4 borrados
  1. 1 0
      src/core/topology.c
  2. 3 3
      src/core/workers.c
  3. 2 1
      src/core/workers.h

+ 1 - 0
src/core/topology.c

@@ -1212,6 +1212,7 @@ _starpu_init_machine_config(struct _starpu_machine_config *config, int no_mp_con
 
 	/* Now we know how many CUDA devices will be used */
 	topology->ncudagpus = ncuda;
+	topology->nworkerpercuda = nworker_per_cuda;
 	STARPU_ASSERT(topology->ncudagpus <= STARPU_MAXCUDADEVS);
 
 	_starpu_initialize_workers_cuda_gpuid(config);

+ 3 - 3
src/core/workers.c

@@ -1764,7 +1764,7 @@ int starpu_worker_get_count_by_type(enum starpu_worker_archtype type)
 			return _starpu_config.topology.ncpus;
 
 		case STARPU_CUDA_WORKER:
-			return _starpu_config.topology.ncudagpus;
+			return _starpu_config.topology.ncudagpus * _starpu_config.topology.nworkerpercuda;
 
 		case STARPU_OPENCL_WORKER:
 			return _starpu_config.topology.nopenclgpus;
@@ -1780,7 +1780,7 @@ int starpu_worker_get_count_by_type(enum starpu_worker_archtype type)
 
                 case STARPU_ANY_WORKER:
                         return _starpu_config.topology.ncpus+
-                                _starpu_config.topology.ncudagpus+
+				_starpu_config.topology.ncudagpus * _starpu_config.topology.nworkerpercuda+
                                 _starpu_config.topology.nopenclgpus+
                                 _starpu_config.topology.nmicdevices+
                                 _starpu_config.topology.nsccdevices+
@@ -1802,7 +1802,7 @@ unsigned starpu_cpu_worker_get_count(void)
 
 unsigned starpu_cuda_worker_get_count(void)
 {
-	return _starpu_config.topology.ncudagpus;
+	return _starpu_config.topology.ncudagpus * _starpu_config.topology.nworkerpercuda;
 }
 
 unsigned starpu_opencl_worker_get_count(void)

+ 2 - 1
src/core/workers.h

@@ -240,8 +240,9 @@ struct _starpu_machine_topology
 	/* Actual number of CPU workers used by StarPU. */
 	unsigned ncpus;
 
-	/* Actual number of CUDA workers used by StarPU. */
+	/* Actual number of CUDA GPUs used by StarPU. */
 	unsigned ncudagpus;
+	unsigned nworkerpercuda;
 
 	/* Actual number of OpenCL workers used by StarPU. */
 	unsigned nopenclgpus;