浏览代码

mic (perfmodels): Correction in topology.c

Thibaud Lambert 11 年之前
父节点
当前提交
5af6d6d996
共有 2 个文件被更改,包括 19 次插入7 次删除
  1. 3 3
      src/core/topology.c
  2. 16 4
      tests/sched_policies/simple_cpu_gpu_sched.c

+ 3 - 3
src/core/topology.c

@@ -775,7 +775,7 @@ _starpu_init_machine_config (struct _starpu_machine_config *config, int no_mp_co
 		config->workers[worker_idx].arch = STARPU_CUDA_WORKER;
 		int devid = _starpu_get_next_cuda_gpuid(config);
 		config->workers[worker_idx].perf_arch.type = STARPU_CUDA_WORKER;
-		config->workers[worker_idx].perf_arch.devid = devid;
+		config->workers[worker_idx].perf_arch.devid = cudagpu;
 		config->workers[worker_idx].perf_arch.ncore = 0;
 		config->workers[worker_idx].mp_nodeid = -1;
 		config->workers[worker_idx].devid = devid;
@@ -849,7 +849,7 @@ _starpu_init_machine_config (struct _starpu_machine_config *config, int no_mp_co
 		}
 		config->workers[worker_idx].arch = STARPU_OPENCL_WORKER;
 		config->workers[worker_idx].perf_arch.type = STARPU_OPENCL_WORKER;
-		config->workers[worker_idx].perf_arch.devid = devid;
+		config->workers[worker_idx].perf_arch.devid = openclgpu;
 		config->workers[worker_idx].perf_arch.ncore = 0;
 		config->workers[worker_idx].mp_nodeid = -1;
 		config->workers[worker_idx].devid = devid;
@@ -911,7 +911,7 @@ _starpu_init_machine_config (struct _starpu_machine_config *config, int no_mp_co
 		config->workers[topology->nworkers + sccdev].arch = STARPU_SCC_WORKER;
 		int devid = _starpu_get_next_scc_deviceid(config);
 		config->workers[topology->nworkers + sccdev].perf_arch.type = STARPU_SCC_WORKER;
-		config->workers[topology->nworkers + sccdev].perf_arch.devid = devid;
+		config->workers[topology->nworkers + sccdev].perf_arch.devid = sccdev;
 		config->workers[topology->nworkers + sccdev].perf_arch.ncore = 0;
 		config->workers[topology->nworkers + sccdev].mp_nodeid = -1;
 		config->workers[topology->nworkers + sccdev].devid = devid;

+ 16 - 4
tests/sched_policies/simple_cpu_gpu_sched.c

@@ -122,8 +122,20 @@ init_perfmodels(void)
 		{
 			for(ncore=0; model_cpu_task.per_arch[STARPU_CUDA_WORKER][devid][ncore] != NULL; ncore++)
 			{
-				model_cpu_task.per_arch[STARPU_CUDA_WORKER][devid][ncore][0].cost_function = cpu_task_cpu;
-				model_gpu_task.per_arch[STARPU_CUDA_WORKER][devid][ncore][0].cost_function = gpu_task_cpu;
+				model_cpu_task.per_arch[STARPU_CUDA_WORKER][devid][ncore][0].cost_function = cpu_task_gpu;
+				model_gpu_task.per_arch[STARPU_CUDA_WORKER][devid][ncore][0].cost_function = gpu_task_gpu;
+			}
+		}
+	}
+
+	if(model_cpu_task.per_arch[STARPU_OPENCL_WORKER] != NULL)
+	{
+		for(devid=0; model_cpu_task.per_arch[STARPU_OPENCL_WORKER][devid] != NULL; devid++)
+		{
+			for(ncore=0; model_cpu_task.per_arch[STARPU_OPENCL_WORKER][devid][ncore] != NULL; ncore++)
+			{
+				model_cpu_task.per_arch[STARPU_OPENCL_WORKER][devid][ncore][0].cost_function = cpu_task_gpu;
+				model_gpu_task.per_arch[STARPU_OPENCL_WORKER][devid][ncore][0].cost_function = gpu_task_gpu;
 			}
 		}
 	}
@@ -193,8 +205,8 @@ run(struct starpu_sched_policy *policy)
 	cpu_task_worker = starpu_worker_get_type(cpu_task->profiling_info->workerid);
 	gpu_task_worker = starpu_worker_get_type(gpu_task->profiling_info->workerid);
 	if (cpu_task_worker != STARPU_CPU_WORKER ||
-	    (gpu_task_worker != STARPU_CUDA_WORKER &&
-	     gpu_task_worker != STARPU_OPENCL_WORKER))
+			(gpu_task_worker != STARPU_CUDA_WORKER &&
+			 gpu_task_worker != STARPU_OPENCL_WORKER))
 		ret = 1;
 	else
 		ret = 0;