Browse Source

src/core: _starpu_load_perfmodel can also be called even when a symbol is not defined

Nathalie Furmento 10 years ago
parent
commit
16e1ab3a70
2 changed files with 9 additions and 16 deletions
  1. 5 2
      src/core/perfmodel/perfmodel.c
  2. 4 14
      src/core/task.c

+ 5 - 2
src/core/perfmodel/perfmodel.c

@@ -140,6 +140,10 @@ void _starpu_load_perfmodel(struct starpu_perfmodel *model)
 
 
 	starpu_perfmodel_init(NULL, model);
 	starpu_perfmodel_init(NULL, model);
 
 
+	// Check if a symbol is defined before trying to load the model from a file
+	if (!model->symbol)
+		return;
+
 	if (model->is_loaded)
 	if (model->is_loaded)
 		return;
 		return;
 
 
@@ -170,8 +174,7 @@ static double starpu_model_expected_perf(struct starpu_task *task, struct starpu
 {
 {
 	if (model)
 	if (model)
 	{
 	{
-		if (model->symbol)
-			_starpu_load_perfmodel(model);
+		_starpu_load_perfmodel(model);
 
 
 		struct _starpu_job *j = _starpu_get_job_associated_to_task(task);
 		struct _starpu_job *j = _starpu_get_job_associated_to_task(task);
 
 

+ 4 - 14
src/core/task.c

@@ -486,20 +486,10 @@ int starpu_task_submit(struct starpu_task *task)
 		_starpu_detect_implicit_data_deps(task);
 		_starpu_detect_implicit_data_deps(task);
 
 
 		if (task->cl->model)
 		if (task->cl->model)
-		{
-			if (task->cl->model->symbol)
-				_starpu_load_perfmodel(task->cl->model);
-			else
-				_starpu_register_model(task->cl->model);
-		}
+			_starpu_load_perfmodel(task->cl->model);
 
 
 		if (task->cl->power_model)
 		if (task->cl->power_model)
-		{
-			if (task->cl->power_model->symbol)
-				_starpu_load_perfmodel(task->cl->power_model);
-			else
-				_starpu_register_model(task->cl->power_model);
-		}
+			_starpu_load_perfmodel(task->cl->power_model);
 	}
 	}
 
 
 	if (bundle)
 	if (bundle)
@@ -514,10 +504,10 @@ int starpu_task_submit(struct starpu_task *task)
 
 
 		while (entry)
 		while (entry)
 		{
 		{
-			if (entry->task->cl->model && entry->task->cl->model->symbol)
+			if (entry->task->cl->model)
 				_starpu_load_perfmodel(entry->task->cl->model);
 				_starpu_load_perfmodel(entry->task->cl->model);
 
 
-			if (entry->task->cl->power_model && entry->task->cl->power_model->symbol)
+			if (entry->task->cl->power_model)
 				_starpu_load_perfmodel(entry->task->cl->power_model);
 				_starpu_load_perfmodel(entry->task->cl->power_model);
 
 
 			entry = entry->next;
 			entry = entry->next;