Bläddra i källkod

Add a test to check whether it is possible to submit a chain of "null tasks"

Cédric Augonnet 15 år sedan
förälder
incheckning
0680ab4221
2 ändrade filer med 54 tillägg och 0 borttagningar
  1. 4 0
      tests/Makefile.am
  2. 50 0
      tests/core/empty_task_chain.c

+ 4 - 0
tests/Makefile.am

@@ -86,6 +86,7 @@ check_PROGRAMS += 				\
 	core/empty_task				\
 	core/empty_task_sync_point		\
 	core/empty_task_sync_point_tasks	\
+	core/empty_task_chain			\
 	core/tag_wait_api			\
 	core/task_wait_api			\
 	core/declare_deps_in_callback		\
@@ -162,6 +163,9 @@ core_empty_task_sync_point_SOURCES =		\
 core_empty_task_sync_point_tasks_SOURCES =	\
 	core/empty_task_sync_point_tasks.c
 
+core_empty_task_chain_SOURCES =			\
+	core/empty_task_chain.c
+
 core_tag_wait_api_SOURCES =			\
 	core/tag_wait_api.c
 

+ 50 - 0
tests/core/empty_task_chain.c

@@ -0,0 +1,50 @@
+/*
+ * StarPU
+ * Copyright (C) INRIA 2008-2010 (see AUTHORS file)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+#include <starpu.h>
+
+#define N	4
+
+int main(int argc, char **argv)
+{
+	int i, ret;
+
+	starpu_init(NULL);
+
+	struct starpu_task **tasks = malloc(N*sizeof(struct starpu_task *));
+
+	for (i = 0; i < N; i++)
+	{
+		tasks[i] = starpu_task_create();
+		tasks[i]->cl = NULL;
+
+		if (i > 0)
+		{
+			starpu_task_declare_deps_array(tasks[i], 1, &tasks[i-1]);
+			ret = starpu_task_submit(tasks[i]);
+			STARPU_ASSERT(!ret);
+		}
+	}
+
+	ret = starpu_task_submit(tasks[0]);
+	STARPU_ASSERT(!ret);
+
+	starpu_task_wait(tasks[N-1]);
+
+	starpu_shutdown();
+
+	return 0;
+}