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

port and complete r16119 from 1.1: put ANNOTATE_HAPPENS_BEFORE after atomic_adds, so that the reading part of the atomic add is considered before the update which signals potential termination

Samuel Thibault лет назад: 9
Родитель
Сommit
69040bc437

+ 1 - 1
examples/heat/dw_factolu.c

@@ -541,8 +541,8 @@ void dw_callback_codelet_update_u22(void *argcb)
 {
 	int ret;
 	cl_args *args = argcb;	
-	ANNOTATE_HAPPENS_BEFORE(args->remaining);
 	unsigned remaining = STARPU_ATOMIC_ADD(args->remaining, (-1));
+	ANNOTATE_HAPPENS_BEFORE(args->remaining);
 
 	if (remaining == 0)
 	{

+ 1 - 1
examples/mandelbrot/mandelbrot.c

@@ -345,8 +345,8 @@ static void compute_block_spmd(void *descr[], void *cl_arg)
 
 	while (1)
 	{
-		ANNOTATE_HAPPENS_BEFORE(pcnt);
 		local_iy = STARPU_ATOMIC_ADD((unsigned int *)pcnt, 1) - 1;
+		ANNOTATE_HAPPENS_BEFORE(pcnt);
 		if (local_iy >= block_size)
 		{
 			ANNOTATE_HAPPENS_AFTER(pcnt);

+ 1 - 1
examples/spmv/dw_block_spmv.c

@@ -104,8 +104,8 @@ void init_problem_callback(void *arg)
 {
 	unsigned *remaining = arg;
 
-	ANNOTATE_HAPPENS_BEFORE(&remaining);
 	unsigned val = STARPU_ATOMIC_ADD(remaining, -1);
+	ANNOTATE_HAPPENS_BEFORE(&remaining);
 
 /*	if (val < 10)
 		printf("callback %d remaining \n", val); */

+ 1 - 1
examples/tag_example/tag_example.c

@@ -161,8 +161,8 @@ static int create_task_grid(unsigned piter)
 
 void callback_cpu(void *argcb STARPU_ATTRIBUTE_UNUSED)
 {
-	ANNOTATE_HAPPENS_BEFORE(&callback_cnt);
 	unsigned newcnt = STARPU_ATOMIC_ADD(&callback_cnt, -1);	
+	ANNOTATE_HAPPENS_BEFORE(&callback_cnt);
 
 	if (newcnt == 0)
 	{

+ 1 - 1
src/core/dependencies/cg.c

@@ -138,8 +138,8 @@ int _starpu_list_tag_successors_in_cg_list(struct _starpu_cg_list *successors, u
 void _starpu_notify_cg(struct _starpu_cg *cg)
 {
 	STARPU_ASSERT(cg);
-	ANNOTATE_HAPPENS_BEFORE(&cg->remaining);
 	unsigned remaining = STARPU_ATOMIC_ADD(&cg->remaining, -1);
+	ANNOTATE_HAPPENS_BEFORE(&cg->remaining);
 
 	if (remaining == 0)
 	{

+ 1 - 1
src/datawizard/coherency.c

@@ -1132,8 +1132,8 @@ static void _starpu_fetch_nowhere_task_input_cb(void *arg)
 	/* One more transfer finished */
 	struct fetch_nowhere_wrapper *wrapper = arg;
 
-	ANNOTATE_HAPPENS_BEFORE(&wrapper->pending);
 	unsigned pending = STARPU_ATOMIC_ADD(&wrapper->pending, -1);
+	ANNOTATE_HAPPENS_BEFORE(&wrapper->pending);
 	if (pending == 0)
 	{
 		ANNOTATE_HAPPENS_AFTER(&wrapper->pending);

+ 1 - 1
tests/datawizard/dsm_stress.c

@@ -44,8 +44,8 @@ static unsigned *v2;
 
 static void callback(void *arg)
 {
-	ANNOTATE_HAPPENS_BEFORE(&cnt);
 	unsigned res = STARPU_ATOMIC_ADD(&cnt, -1);
+	ANNOTATE_HAPPENS_BEFORE(&cnt);
 
 	if (res == 0)
 	{

+ 1 - 1
tests/main/execute_on_a_specific_worker.c

@@ -43,8 +43,8 @@ static unsigned *v;
 
 static void callback(void *arg)
 {
-	ANNOTATE_HAPPENS_BEFORE(&cnt);
 	unsigned res = STARPU_ATOMIC_ADD(&cnt, -1);
+	ANNOTATE_HAPPENS_BEFORE(&cnt);
 
 	if (res == 0)
 	{

+ 1 - 1
tests/main/regenerate_pipeline.c

@@ -41,8 +41,8 @@ void callback(void *arg)
 	unsigned *cnt = arg;
 	unsigned res;
 
-	ANNOTATE_HAPPENS_BEFORE(&cnt);
 	res = STARPU_ATOMIC_ADD(cnt, 1);
+	ANNOTATE_HAPPENS_BEFORE(&cnt);
 
 	if (res == ntasks)
 	{

+ 1 - 1
tests/overlap/overlap.c

@@ -43,8 +43,8 @@ static unsigned cnt = NTASKS;
 
 static void callback(void *arg)
 {
-	ANNOTATE_HAPPENS_BEFORE(&cnt);
 	unsigned res = STARPU_ATOMIC_ADD(&cnt, -1);
+	ANNOTATE_HAPPENS_BEFORE(&cnt);
 
 	if (res == 0)
 	{