瀏覽代碼

Add a test for _starpu_worker_exists.

Cyril Roelandt 13 年之前
父節點
當前提交
ce7a43bd30
共有 2 個文件被更改,包括 70 次插入0 次删除
  1. 1 0
      tests/Makefile.am
  2. 69 0
      tests/core/_starpu_worker_exists.c

+ 1 - 0
tests/Makefile.am

@@ -132,6 +132,7 @@ noinst_PROGRAMS =				\
 	core/declare_deps_after_submission	\
 	core/declare_deps_after_submission	\
 	core/declare_deps_after_submission_synchronous	\
 	core/declare_deps_after_submission_synchronous	\
 	core/get_current_task			\
 	core/get_current_task			\
+	core/_starpu_worker_exists              \
 	datawizard/acquire_cb			\
 	datawizard/acquire_cb			\
 	datawizard/acquire_cb_insert		\
 	datawizard/acquire_cb_insert		\
 	datawizard/acquire_release		\
 	datawizard/acquire_release		\

+ 69 - 0
tests/core/_starpu_worker_exists.c

@@ -0,0 +1,69 @@
+#include <starpu.h>
+
+static int can_always_execute(unsigned workerid,
+			      struct starpu_task *task,
+			      unsigned nimpl)
+{
+	(void) workerid;
+	(void) task;
+	(void) nimpl;
+
+	return 1;
+}
+
+static int can_never_execute(unsigned workerid,
+			     struct starpu_task *task,
+			     unsigned nimpl)
+{
+	(void) workerid;
+	(void) task;
+	(void) nimpl;
+
+	return 0;
+}
+
+static void fake(void *buffers[], void *args)
+{
+	(void) buffers;
+	(void) args;
+}
+
+static struct starpu_codelet cl =
+{
+	.where        = STARPU_CPU | STARPU_CUDA | STARPU_OPENCL,
+	.cpu_funcs    = { fake, NULL},
+	.cuda_funcs   = { fake, NULL},
+	.opencl_funcs = { fake, NULL},
+	.nbuffers     = 0
+};
+
+int
+main(void)
+{
+	int ret;
+	struct starpu_task *task;
+
+	starpu_init(NULL);
+
+	task = starpu_task_create();
+	task->cl = &cl;
+
+	cl.can_execute = NULL;
+	ret = _starpu_worker_exists(task);
+	if (!ret)
+		return EXIT_FAILURE;
+
+	cl.can_execute = can_always_execute;
+	ret = _starpu_worker_exists(task);
+	if (!ret)
+		return EXIT_FAILURE;
+
+	cl.can_execute = can_never_execute;
+	ret = _starpu_worker_exists(task);
+	if (ret)
+		return EXIT_FAILURE;
+
+	starpu_shutdown();
+	
+	return EXIT_SUCCESS;
+}