Sfoglia il codice sorgente

mic (perfmodel): Correction compilation error

Thibaud Lambert 11 anni fa
parent
commit
a87c30578e

+ 2 - 2
src/core/detect_combined_workers.c

@@ -41,7 +41,7 @@ static void find_workers(hwloc_obj_t obj, int cpu_workers[STARPU_NMAXWORKERS], u
 	/* Got to a PU leaf */
 	struct _starpu_worker *worker = obj->userdata;
 	/* is it a CPU worker? */
-	if (worker->perf_arch == STARPU_CPU_DEFAULT)
+	if (worker->perf_arch.type == STARPU_CPU_WORKER && worker->perf_arch.ncore == 0)
 	{
 		_STARPU_DEBUG("worker %d is part of it\n", worker->workerid);
 		/* Add it to the combined worker */
@@ -174,7 +174,7 @@ static void find_and_assign_combinations_with_hwloc(int *workerids, int nworkers
 	for (i = 0; i < nworkers; i++)
 	{
 		struct _starpu_worker *worker = _starpu_get_worker_struct(workerids[i]);
-		if (worker->perf_arch == STARPU_CPU_DEFAULT)
+		if (worker->perf_arch.type == STARPU_CPU_WORKER && worker->perf_arch.ncore == 0)
 		{
 			hwloc_obj_t obj = hwloc_get_obj_by_depth(topology->hwtopology, config->cpu_depth, worker->bindid);
 			STARPU_ASSERT(obj->userdata == worker);

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

@@ -1074,7 +1074,7 @@ char* starpu_perfmodel_get_archtype_name(enum starpu_worker_archtype archtype)
 
 void starpu_perfmodel_get_arch_name(struct starpu_perfmodel_arch* arch, char *archname, size_t maxlen,unsigned nimpl)
 {
-	snprintf(archname, maxlen, "%s_%d_ncore_%d_impl_%u", 
+	snprintf(archname, maxlen, "%s_%dncore_%dimpl_%u", 
 			starpu_perfmodel_get_archtype_name(arch->type),
 			arch->devid, 
 			arch->ncore, 

+ 5 - 1
src/core/task.c

@@ -236,7 +236,11 @@ int _starpu_submit_job(struct _starpu_job *j)
 	if(sched_ctx != NULL && j->task->sched_ctx != _starpu_get_initial_sched_ctx()->id && j->task->sched_ctx != STARPU_NMAX_SCHED_CTXS
 	   && sched_ctx->perf_counters != NULL)
 	{
-		_starpu_compute_buffers_footprint(j->task->cl->model, STARPU_CPU_DEFAULT, 0, j);
+		struct starpu_perfmodel_arch arch;
+		arch.type = STARPU_CPU_WORKER;
+		arch.devid = 0;
+		arch.ncore = 0;
+		_starpu_compute_buffers_footprint(j->task->cl->model, &arch, 0, j);
 		int i;
 		size_t data_size = 0;
 		for(i = 0; i < STARPU_NMAXBUFS; i++)

+ 9 - 8
src/core/topology.c

@@ -774,11 +774,11 @@ _starpu_init_machine_config (struct _starpu_machine_config *config, int no_mp_co
 		int worker_idx = topology->nworkers + cudagpu;
 		config->workers[worker_idx].arch = STARPU_CUDA_WORKER;
 		int devid = _starpu_get_next_cuda_gpuid(config);
-		enum starpu_perfmodel_archtype arch =
-			(enum starpu_perfmodel_archtype)((int)STARPU_CUDA_DEFAULT + devid);
+		config->workers[worker_idx].perf_arch.type = STARPU_CUDA_WORKER;
+		config->workers[worker_idx].perf_arch.devid = devid;
+		config->workers[worker_idx].perf_arch.ncore = 0;
 		config->workers[worker_idx].mp_nodeid = -1;
 		config->workers[worker_idx].devid = devid;
-		config->workers[worker_idx].perf_arch = arch;
 		config->workers[worker_idx].worker_mask = STARPU_CUDA;
 		config->worker_mask |= STARPU_CUDA;
 
@@ -848,11 +848,11 @@ _starpu_init_machine_config (struct _starpu_machine_config *config, int no_mp_co
 			break;
 		}
 		config->workers[worker_idx].arch = STARPU_OPENCL_WORKER;
-		enum starpu_perfmodel_archtype arch =
-			(enum starpu_perfmodel_archtype)((int)STARPU_OPENCL_DEFAULT + devid);
+		config->workers[worker_idx].perf_arch.type = STARPU_OPENCL_WORKER;
+		config->workers[worker_idx].perf_arch.devid = devid;
+		config->workers[worker_idx].perf_arch.ncore = 0;
 		config->workers[worker_idx].mp_nodeid = -1;
 		config->workers[worker_idx].devid = devid;
-		config->workers[worker_idx].perf_arch = arch;
 		config->workers[worker_idx].worker_mask = STARPU_OPENCL;
 		config->worker_mask |= STARPU_OPENCL;
 	}
@@ -910,10 +910,11 @@ _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);
-		enum starpu_perfmodel_archtype arch = (enum starpu_perfmodel_archtype)((int)STARPU_SCC_DEFAULT + devid);
+		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.ncore = 0;
 		config->workers[topology->nworkers + sccdev].mp_nodeid = -1;
 		config->workers[topology->nworkers + sccdev].devid = devid;
-		config->workers[topology->nworkers + sccdev].perf_arch = arch;
 		config->workers[topology->nworkers + sccdev].worker_mask = STARPU_SCC;
 		config->worker_mask |= STARPU_SCC;
 	}

+ 17 - 7
src/debug/traces/starpu_fxt.c

@@ -337,7 +337,7 @@ static void handle_worker_init_start(struct fxt_ev_64 *ev, struct starpu_fxt_opt
 	register_worker_id(threadid, workerid);
 
 	char *kindstr = "";
-	enum starpu_perfmodel_archtype archtype = 0;
+	struct starpu_perfmodel_arch arch;
 
 	switch (ev->param[0])
 	{
@@ -348,27 +348,37 @@ static void handle_worker_init_start(struct fxt_ev_64 *ev, struct starpu_fxt_opt
 		case _STARPU_FUT_CPU_KEY:
 			set_next_cpu_worker_color(workerid);
 			kindstr = "CPU";
-			archtype = STARPU_CPU_DEFAULT;
+			arch.type = STARPU_CPU_WORKER;
+			arch.devid = 0;
+			arch.ncore = 0;
 			break;
 		case _STARPU_FUT_CUDA_KEY:
 			set_next_cuda_worker_color(workerid);
 			kindstr = "CUDA";
-			archtype = STARPU_CUDA_DEFAULT + devid;
+			arch.type = STARPU_CUDA_WORKER;
+			arch.devid = devid;
+			arch.ncore = 0;
 			break;
 		case _STARPU_FUT_OPENCL_KEY:
 			set_next_opencl_worker_color(workerid);
 			kindstr = "OPENCL";
-			archtype = STARPU_OPENCL_DEFAULT + devid;
+			arch.type = STARPU_OPENCL_WORKER;
+			arch.devid = devid;
+			arch.ncore = 0;
 			break;
 		case _STARPU_FUT_MIC_KEY:
 			set_next_mic_worker_color(workerid);
 			kindstr = "mic";
-			archtype = STARPU_MIC_DEFAULT + devid;
+			arch.type = STARPU_MIC_WORKER;
+			arch.devid = devid;
+			arch.ncore = 0;
 			break;
 		case _STARPU_FUT_SCC_KEY:
 			set_next_scc_worker_color(workerid);
 			kindstr = "scc";
-			archtype = STARPU_SCC_DEFAULT + devid;
+			arch.type = STARPU_SCC_WORKER;
+			arch.devid = devid;
+			arch.ncore = 0;
 			break;
 		default:
 			STARPU_ABORT();
@@ -405,7 +415,7 @@ static void handle_worker_init_start(struct fxt_ev_64 *ev, struct starpu_fxt_opt
 	fprintf(activity_file, "name\t%d\t%s %d\n", workerid, kindstr, devid);
 
 	snprintf(options->worker_names[workerid], 256, "%s %d", kindstr, devid);
-	options->worker_archtypes[workerid] = archtype;
+	options->worker_archtypes[workerid] = arch;
 }
 
 static void handle_worker_init_end(struct fxt_ev_64 *ev, struct starpu_fxt_options *options)

+ 15 - 0
tools/starpu_perfmodel_plot.c

@@ -325,9 +325,14 @@ static void display_history_based_perf_models(FILE *gnuplot_file, struct starpu_
 		minimum = ULONG_MAX;
 		/* Get the next minimum */
 		for (archtype = archmin; archtype < archmax; archtype++)
+		{
 			if(model->per_arch[archtype]!=NULL)
+			{
 				for(dev = devmin; model->per_arch[archtype][dev] != NULL && (devmax == 0 || dev < devmax);dev++)
+				{
 					for(core = coremin; model->per_arch[archtype][dev][core] != NULL && (coremax == 0 || core < coremax); core++)
+				
+					{
 						for (implid = 0; implid < STARPU_MAXIMPLEMENTATIONS; implid++)
 						{
 							struct starpu_perfmodel_per_arch *arch_model = &model->per_arch[archtype][dev][core][implid];
@@ -338,6 +343,10 @@ static void display_history_based_perf_models(FILE *gnuplot_file, struct starpu_
 									minimum = size;
 							}
 						}
+					}
+				}
+			}
+		}
 		if (minimum == ULONG_MAX)
 			break;
 
@@ -573,6 +582,10 @@ int main(int argc, char **argv)
 	int ret;
 	struct starpu_perfmodel model;
 
+	ret = starpu_init(NULL);
+	if (ret == -ENODEV) return 1;
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
+
 #ifdef __MINGW32__
 	WSADATA wsadata;
 	WSAStartup(MAKEWORD(1,0), &wsadata);
@@ -642,5 +655,7 @@ int main(int argc, char **argv)
 
 	_STARPU_DISP("Gnuplot file <%s> generated\n", gnuplot_file_name);
 
+	starpu_shutdown();
+
 	return 0;
 }