Просмотр исходного кода

examples/sched_ctx/sched_ctx.c: submitting tasks to a context without the required workers is now possible

Nathalie Furmento лет назад: 6
Родитель
Сommit
cdfa25094a
1 измененных файлов с 9 добавлено и 19 удалено
  1. 9 19
      examples/sched_ctx/sched_ctx.c

+ 9 - 19
examples/sched_ctx/sched_ctx.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2012-2014,2017-2018                      Inria
- * Copyright (C) 2010-2017                                CNRS
+ * Copyright (C) 2010-2018                                CNRS
  * Copyright (C) 2010-2014                                Université de Bordeaux
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -28,6 +28,8 @@
 int tasks_executed = 0;
 int ctx1_tasks_executed = 0;
 int ctx2_tasks_executed = 0;
+int cpu_tasks_executed = 0;
+int gpu_tasks_executed = 0;
 
 static void sched_ctx_cpu_func(void *descr[], void *arg)
 {
@@ -35,6 +37,7 @@ static void sched_ctx_cpu_func(void *descr[], void *arg)
 	(void)arg;
 	(void)STARPU_ATOMIC_ADD(&tasks_executed,1);
 	(void)STARPU_ATOMIC_ADD(&ctx1_tasks_executed,1);
+	(void)STARPU_ATOMIC_ADD(&cpu_tasks_executed,1);
 }
 
 static void sched_ctx2_cpu_func(void *descr[], void *arg)
@@ -43,6 +46,7 @@ static void sched_ctx2_cpu_func(void *descr[], void *arg)
 	(void)arg;
 	(void)STARPU_ATOMIC_ADD(&tasks_executed,1);
 	(void)STARPU_ATOMIC_ADD(&ctx2_tasks_executed,1);
+	(void)STARPU_ATOMIC_ADD(&cpu_tasks_executed,1);
 }
 
 static void sched_ctx2_cuda_func(void *descr[], void *arg)
@@ -51,6 +55,7 @@ static void sched_ctx2_cuda_func(void *descr[], void *arg)
 	(void)arg;
 	(void)STARPU_ATOMIC_ADD(&tasks_executed,1);
 	(void)STARPU_ATOMIC_ADD(&ctx2_tasks_executed,1);
+	(void)STARPU_ATOMIC_ADD(&gpu_tasks_executed,1);
 }
 
 static struct starpu_codelet sched_ctx_codelet1 =
@@ -127,25 +132,8 @@ int main(void)
 	/* tell starpu when you finished submitting tasks to this context
 	   in order to allow moving resources from this context to the inheritor one
 	   when its corresponding tasks finished executing */
-
 	starpu_sched_ctx_finished_submit(sched_ctx1);
 
-	/* task with no cuda impl submitted to a ctx with gpus only */
-	struct starpu_task *task2 = starpu_task_create();
-	task2->cl = &sched_ctx_codelet1;
-	task2->cl_arg = NULL;
-
-	/*submit tasks to context*/
-	ret = starpu_task_submit_to_ctx(task2,sched_ctx2);
-	if (ncuda == 0)
-	{
-		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-	}
-	else
-	{
-		STARPU_ASSERT_MSG(ret == -ENODEV, "submit task should ret enodev when the ctx does not have the PUs needed by the task");
-	}
-
 	for (i = 0; i < ntasks/2; i++)
 	{
 		struct starpu_task *task = starpu_task_create();
@@ -166,9 +154,11 @@ int main(void)
 	starpu_sched_ctx_add_workers(procs1, nprocs1, sched_ctx2);
 	starpu_sched_ctx_delete(sched_ctx1);
 	starpu_sched_ctx_delete(sched_ctx2);
-	printf("tasks executed %d out of %d\n", tasks_executed, ntasks+1);
+	printf("tasks executed %d out of %d\n", tasks_executed, ntasks);
 	printf("tasks executed on ctx1: %d\n", ctx1_tasks_executed);
 	printf("tasks executed on ctx2: %d\n", ctx2_tasks_executed);
+	printf("tasks executed on CPU: %d\n", cpu_tasks_executed);
+	printf("tasks executed on GPU: %d\n", gpu_tasks_executed);
 
 enodev:
 	starpu_shutdown();