Explorar o código

tests: Factorize increment codelet

Samuel Thibault %!s(int64=4) %!d(string=hai) anos
pai
achega
4d8bc36386

+ 8 - 4
tests/Makefile.am

@@ -642,28 +642,32 @@ main_insert_task_where_SOURCES +=		\
 endif
 
 main_subgraph_repeat_SOURCES =		\
-	main/subgraph_repeat.c
+	main/subgraph_repeat.c		\
+	main/increment_codelet.c
 if STARPU_USE_CUDA
 main_subgraph_repeat_SOURCES +=		\
 	main/increment.cu
 endif
 
 main_subgraph_repeat_tag_SOURCES =		\
-	main/subgraph_repeat_tag.c
+	main/subgraph_repeat_tag.c		\
+	main/increment_codelet.c
 if STARPU_USE_CUDA
 main_subgraph_repeat_tag_SOURCES +=		\
 	main/increment.cu
 endif
 
 main_subgraph_repeat_regenerate_SOURCES =		\
-	main/subgraph_repeat_regenerate.c
+	main/subgraph_repeat_regenerate.c		\
+	main/increment_codelet.c
 if STARPU_USE_CUDA
 main_subgraph_repeat_regenerate_SOURCES +=		\
 	main/increment.cu
 endif
 
 main_subgraph_repeat_regenerate_tag_SOURCES =		\
-	main/subgraph_repeat_regenerate_tag.c
+	main/subgraph_repeat_regenerate_tag.c		\
+	main/increment_codelet.c
 if STARPU_USE_CUDA
 main_subgraph_repeat_regenerate_tag_SOURCES +=		\
 	main/increment.cu

+ 40 - 0
tests/main/increment_codelet.c

@@ -0,0 +1,40 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2010-2020  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+ *
+ * StarPU 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.
+ *
+ * StarPU 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 "increment_codelet.h"
+
+void cpu_increment(void *descr[], void *arg)
+{
+	(void)arg;
+	unsigned *var = (unsigned *)STARPU_VARIABLE_GET_PTR(descr[0]);
+	(*var)++;
+}
+
+struct starpu_codelet increment_codelet =
+{
+	.cpu_funcs = {cpu_increment},
+#ifdef STARPU_USE_CUDA
+	.cuda_funcs = {cuda_host_increment},
+	.cuda_flags = {STARPU_CUDA_ASYNC},
+#endif
+	// TODO
+	//.opencl_funcs = {dummy_func},
+	.cpu_funcs_name = {"cpu_increment"},
+	.model = NULL,
+	.modes = { STARPU_RW },
+	.nbuffers = 1
+};
+

+ 21 - 0
tests/main/increment_codelet.h

@@ -0,0 +1,21 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2010-2020  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
+ *
+ * StarPU 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.
+ *
+ * StarPU 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>
+
+extern void cuda_host_increment(void *descr[], void *_args);
+extern void cpu_increment(void *descr[], void *arg);
+extern struct starpu_codelet increment_codelet;

+ 5 - 28
tests/main/subgraph_repeat.c

@@ -17,6 +17,7 @@
 #include <starpu.h>
 #include <common/thread.h>
 
+#include "increment_codelet.h"
 #include "../helper.h"
 
 /*
@@ -51,30 +52,6 @@ static unsigned *check_cnt;
 static starpu_pthread_cond_t cond = STARPU_PTHREAD_COND_INITIALIZER;
 static starpu_pthread_mutex_t mutex = STARPU_PTHREAD_MUTEX_INITIALIZER;
 
-extern void cuda_host_increment(void *descr[], void *_args);
-
-void cpu_increment(void *descr[], void *arg)
-{
-	(void)arg;
-	unsigned *var = (unsigned *)STARPU_VARIABLE_GET_PTR(descr[0]);
-	(*var)++;
-}
-
-static struct starpu_codelet dummy_codelet =
-{
-	.cpu_funcs = {cpu_increment},
-#ifdef STARPU_USE_CUDA
-	.cuda_funcs = {cuda_host_increment},
-	.cuda_flags = {STARPU_CUDA_ASYNC},
-#endif
-	// TODO
-	//.opencl_funcs = {dummy_func},
-	.cpu_funcs_name = {"cpu_increment"},
-	.model = NULL,
-	.modes = { STARPU_RW },
-	.nbuffers = 1
-};
-
 static void callback_task_D(void *arg)
 {
 	(void)arg;
@@ -120,19 +97,19 @@ int main(int argc, char **argv)
 	starpu_variable_data_register(&check_data, STARPU_MAIN_RAM, (uintptr_t)check_cnt, sizeof(*check_cnt));
 
 	starpu_task_init(&taskA);
-	taskA.cl = &dummy_codelet;
+	taskA.cl = &increment_codelet;
 	taskA.handles[0] = check_data;
 
 	starpu_task_init(&taskB);
-	taskB.cl = &dummy_codelet;
+	taskB.cl = &increment_codelet;
 	taskB.handles[0] = check_data;
 
 	starpu_task_init(&taskC);
-	taskC.cl = &dummy_codelet;
+	taskC.cl = &increment_codelet;
 	taskC.handles[0] = check_data;
 
 	starpu_task_init(&taskD);
-	taskD.cl = &dummy_codelet;
+	taskD.cl = &increment_codelet;
 	taskD.callback_func = callback_task_D;
 	taskD.handles[0] = check_data;
 

+ 5 - 26
tests/main/subgraph_repeat_regenerate.c

@@ -17,6 +17,7 @@
 #include <starpu.h>
 #include <common/thread.h>
 
+#include "increment_codelet.h"
 #include "../helper.h"
 
 /*
@@ -55,28 +56,6 @@ static starpu_pthread_mutex_t mutex = STARPU_PTHREAD_MUTEX_INITIALIZER;
 
 extern void cuda_host_increment(void *descr[], void *_args);
 
-void cpu_increment(void *descr[], void *arg)
-{
-	(void)arg;
-	unsigned *var = (unsigned *)STARPU_VARIABLE_GET_PTR(descr[0]);
-	(*var)++;
-}
-
-static struct starpu_codelet dummy_codelet =
-{
-	.cpu_funcs = {cpu_increment},
-#ifdef STARPU_USE_CUDA
-	.cuda_funcs = {cuda_host_increment},
-	.cuda_flags = {STARPU_CUDA_ASYNC},
-#endif
-	// TODO
-	//.opencl_funcs = {dummy_func},
-	.cpu_funcs_name = {"cpu_increment"},
-	.model = NULL,
-	.modes = { STARPU_RW },
-	.nbuffers = 1
-};
-
 static void callback_task_B(void *arg)
 {
 	(void)arg;
@@ -136,24 +115,24 @@ int main(int argc, char **argv)
 	starpu_variable_data_register(&check_data, STARPU_MAIN_RAM, (uintptr_t)check_cnt, sizeof(*check_cnt));
 
 	starpu_task_init(&taskA);
-	taskA.cl = &dummy_codelet;
+	taskA.cl = &increment_codelet;
 	taskA.regenerate = 0; /* this task will be explicitely resubmitted if needed */
 	taskA.handles[0] = check_data;
 
 	starpu_task_init(&taskB);
-	taskB.cl = &dummy_codelet;
+	taskB.cl = &increment_codelet;
 	taskB.callback_func = callback_task_B;
 	taskB.regenerate = 1;
 	taskB.handles[0] = check_data;
 
 	starpu_task_init(&taskC);
-	taskC.cl = &dummy_codelet;
+	taskC.cl = &increment_codelet;
 	taskC.callback_func = callback_task_C;
 	taskC.regenerate = 1;
 	taskC.handles[0] = check_data;
 
 	starpu_task_init(&taskD);
-	taskD.cl = &dummy_codelet;
+	taskD.cl = &increment_codelet;
 	taskD.callback_func = callback_task_D;
 	taskD.regenerate = 1;
 	taskD.handles[0] = check_data;

+ 5 - 28
tests/main/subgraph_repeat_regenerate_tag.c

@@ -17,6 +17,7 @@
 #include <starpu.h>
 #include <common/thread.h>
 
+#include "increment_codelet.h"
 #include "../helper.h"
 
 /*
@@ -61,30 +62,6 @@ static unsigned *check_cnt;
 static starpu_pthread_cond_t cond = STARPU_PTHREAD_COND_INITIALIZER;
 static starpu_pthread_mutex_t mutex = STARPU_PTHREAD_MUTEX_INITIALIZER;
 
-extern void cuda_host_increment(void *descr[], void *_args);
-
-void cpu_increment(void *descr[], void *arg)
-{
-	(void)arg;
-	unsigned *var = (unsigned *)STARPU_VARIABLE_GET_PTR(descr[0]);
-	(*var)++;
-}
-
-static struct starpu_codelet dummy_codelet =
-{
-	.cpu_funcs = {cpu_increment},
-#ifdef STARPU_USE_CUDA
-	.cuda_funcs = {cuda_host_increment},
-	.cuda_flags = {STARPU_CUDA_ASYNC},
-#endif
-	// TODO
-	//.opencl_funcs = {dummy_func},
-	.cpu_funcs_name = {"cpu_increment"},
-	.model = NULL,
-	.modes = { STARPU_RW },
-	.nbuffers = 1
-};
-
 static void callback_task_A(void *arg)
 {
 	(void)arg;
@@ -169,7 +146,7 @@ int main(int argc, char **argv)
 	starpu_variable_data_register(&check_data, STARPU_MAIN_RAM, (uintptr_t)check_cnt, sizeof(*check_cnt));
 
 	starpu_task_init(&taskA);
-	taskA.cl = &dummy_codelet;
+	taskA.cl = &increment_codelet;
 	taskA.regenerate = 1; /* this task will be explicitely resubmitted if needed */
 	taskA.use_tag = 1;
 	taskA.tag_id = TAG_A;
@@ -177,7 +154,7 @@ int main(int argc, char **argv)
 	taskA.handles[0] = check_data;
 
 	starpu_task_init(&taskB);
-	taskB.cl = &dummy_codelet;
+	taskB.cl = &increment_codelet;
 	taskB.regenerate = 1;
 	taskB.use_tag = 1;
 	taskB.tag_id = TAG_B;
@@ -185,7 +162,7 @@ int main(int argc, char **argv)
 	taskB.handles[0] = check_data;
 
 	starpu_task_init(&taskC);
-	taskC.cl = &dummy_codelet;
+	taskC.cl = &increment_codelet;
 	taskC.regenerate = 1;
 	taskC.use_tag = 1;
 	taskC.tag_id = TAG_C;
@@ -193,7 +170,7 @@ int main(int argc, char **argv)
 	taskC.handles[0] = check_data;
 
 	starpu_task_init(&taskD);
-	taskD.cl = &dummy_codelet;
+	taskD.cl = &increment_codelet;
 	taskD.callback_func = callback_task_D;
 	taskD.regenerate = 1;
 	taskD.use_tag = 1;

+ 5 - 28
tests/main/subgraph_repeat_tag.c

@@ -16,6 +16,7 @@
 
 #include <starpu.h>
 
+#include "increment_codelet.h"
 #include "../helper.h"
 
 /*
@@ -52,30 +53,6 @@ static unsigned *check_cnt;
 static starpu_pthread_cond_t cond = STARPU_PTHREAD_COND_INITIALIZER;
 static starpu_pthread_mutex_t mutex = STARPU_PTHREAD_MUTEX_INITIALIZER;
 
-extern void cuda_host_increment(void *descr[], void *_args);
-
-void cpu_increment(void *descr[], void *arg)
-{
-	(void)arg;
-	unsigned *var = (unsigned *)STARPU_VARIABLE_GET_PTR(descr[0]);
-	(*var)++;
-}
-
-static struct starpu_codelet dummy_codelet =
-{
-	.cpu_funcs = {cpu_increment},
-#ifdef STARPU_USE_CUDA
-	.cuda_funcs = {cuda_host_increment},
-	.cuda_flags = {STARPU_CUDA_ASYNC},
-#endif
-	// TODO
-	//.opencl_funcs = {dummy_func},
-	.cpu_funcs_name = {"cpu_increment"},
-	.model = NULL,
-	.modes = { STARPU_RW },
-	.nbuffers = 1
-};
-
 static void callback_task_B(void *arg)
 {
 	(void)arg;
@@ -145,24 +122,24 @@ int main(int argc, char **argv)
 	starpu_variable_data_register(&check_data, STARPU_MAIN_RAM, (uintptr_t)check_cnt, sizeof(*check_cnt));
 
 	starpu_task_init(&taskA);
-	taskA.cl = &dummy_codelet;
+	taskA.cl = &increment_codelet;
 	taskA.regenerate = 0; /* this task will be explicitely resubmitted if needed */
 	taskA.handles[0] = check_data;
 
 	starpu_task_init(&taskB);
-	taskB.cl = &dummy_codelet;
+	taskB.cl = &increment_codelet;
 	taskB.regenerate = 1;
 	taskB.callback_func = callback_task_B;
 	taskB.handles[0] = check_data;
 
 	starpu_task_init(&taskC);
-	taskC.cl = &dummy_codelet;
+	taskC.cl = &increment_codelet;
 	taskC.regenerate = 1;
 	taskC.callback_func = callback_task_C;
 	taskC.handles[0] = check_data;
 
 	starpu_task_init(&taskD);
-	taskD.cl = &dummy_codelet;
+	taskD.cl = &increment_codelet;
 	taskD.callback_func = callback_task_D;
 	taskD.regenerate = 1;
 	taskD.handles[0] = check_data;