Browse Source

src/core/perfmodel/perfmodel_history.c: do not mix array indexes and combination id

Nathalie Furmento 11 years ago
parent
commit
702fd94e8c
1 changed files with 18 additions and 16 deletions
  1. 18 16
      src/core/perfmodel/perfmodel_history.c

+ 18 - 16
src/core/perfmodel/perfmodel_history.c

@@ -544,12 +544,13 @@ static void dump_model_file(FILE *f, struct starpu_perfmodel *model)
 	fprintf(f, "# number of combinations\n");
 	fprintf(f, "%u\n", ncombs);
 
-	int comb, impl, dev;
-	for(comb = 0; comb < ncombs; comb++)
+	int i, impl, dev;
+	for(i = 0; i < ncombs; i++)
 	{
-		int ndevices = arch_combs[model->state->combs[comb]]->ndevices;
+		int comb = model->state->combs[i];
+		int ndevices = arch_combs[comb]->ndevices;
 		fprintf(f, "####################\n");
-		fprintf(f, "# COMB_%d\n", model->state->combs[comb]);
+		fprintf(f, "# COMB_%d\n", comb);
 		fprintf(f, "# number of types devices\n");
 		fprintf(f, "%u\n", ndevices);
 
@@ -558,20 +559,20 @@ static void dump_model_file(FILE *f, struct starpu_perfmodel *model)
 			fprintf(f, "####################\n");
 			fprintf(f, "# DEV_%d\n", dev);
 			fprintf(f, "# device type (CPU - 0, CUDA - 1, OPENCL - 2, MIC - 3, SCC - 4)\n");
-			fprintf(f, "%u\n", arch_combs[model->state->combs[comb]]->devices[dev].type);
+			fprintf(f, "%u\n", arch_combs[comb]->devices[dev].type);
 
 			fprintf(f, "####################\n");
 			fprintf(f, "# DEV_%d\n", dev);
 			fprintf(f, "# device id \n");
-			fprintf(f, "%u\n", arch_combs[model->state->combs[comb]]->devices[dev].devid);
+			fprintf(f, "%u\n", arch_combs[comb]->devices[dev].devid);
 
 			fprintf(f, "####################\n");
 			fprintf(f, "# DEV_%d\n", dev);
 			fprintf(f, "# number of cores \n");
-			fprintf(f, "%u\n", arch_combs[model->state->combs[comb]]->devices[dev].ncores);
+			fprintf(f, "%u\n", arch_combs[comb]->devices[dev].ncores);
 		}
 
-		int nimpls = model->state->nimpls[comb];
+		int nimpls = model->state->nimpls[i];
 		fprintf(f, "##########\n");
 		fprintf(f, "# number of implementations\n");
 		fprintf(f, "%u\n", nimpls);
@@ -759,13 +760,14 @@ void _starpu_deinitialize_performance_model(struct starpu_perfmodel *model)
 	if(model->is_init && model->state && model->state->per_arch != NULL)
 	{
 		int ncombs = model->state->ncombs;
-		int comb, impl;
-		for(comb = 0; comb < ncombs; comb++)
+		int i, impl;
+		for(i=0; i < ncombs; i++)
 		{
-			int nimpls = model->state->nimpls[comb];
+			int comb = model->state->combs[i];
+			int nimpls = model->state->nimpls[i];
 			for(impl = 0; impl < nimpls; impl++)
 			{
-				struct starpu_perfmodel_per_arch *archmodel = &model->state->per_arch[model->state->combs[comb]][impl];
+				struct starpu_perfmodel_per_arch *archmodel = &model->state->per_arch[comb][impl];
 				struct starpu_perfmodel_history_list *list, *plist;
 				struct starpu_perfmodel_history_table *entry, *tmp;
 
@@ -786,11 +788,11 @@ void _starpu_deinitialize_performance_model(struct starpu_perfmodel *model)
 				}
 				archmodel->list = NULL;
 			}
-			free(model->state->per_arch[model->state->combs[comb]]);
-			model->state->per_arch[model->state->combs[comb]] = NULL;
+			free(model->state->per_arch[comb]);
+			model->state->per_arch[comb] = NULL;
 
-			free(model->state->per_arch_is_set[model->state->combs[comb]]);
-			model->state->per_arch_is_set[model->state->combs[comb]] = NULL;
+			free(model->state->per_arch_is_set[comb]);
+			model->state->per_arch_is_set[comb] = NULL;
 		}
 		free(model->state->per_arch);
 		model->state->per_arch = NULL;