瀏覽代碼

fix memory leak: only really parallel tasks get freed

Samuel Thibault 8 年之前
父節點
當前提交
2b6e2c26e5
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      src/core/sched_policy.c

+ 8 - 2
src/core/sched_policy.c

@@ -571,8 +571,14 @@ int _starpu_push_task_to_workers(struct starpu_task *task)
 				while(workers->has_next(workers, &it))
 				{
 					unsigned workerid = workers->get_next(workers, &it);
-					struct starpu_task *alias = starpu_task_dup(task);
-					alias->destroy = 1;
+					struct starpu_task *alias;
+					if (job->task_size > 1)
+					{
+						alias = starpu_task_dup(task);
+						alias->destroy = 1;
+					}
+					else
+						alias = task;
 					ret |= _starpu_push_task_on_specific_worker(alias, workerid);
 				}
 			}