Parcourir la source

examples: check return values of starpu functions

Nathalie Furmento il y a 14 ans
Parent
commit
572473b193

+ 3 - 1
examples/audio/starpu_audio_processing.c

@@ -298,6 +298,7 @@ void callback(void *arg)
 
 void create_starpu_task(unsigned iter)
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &band_filter_cl;
@@ -307,7 +308,8 @@ void create_starpu_task(unsigned iter)
 	task->callback_func = callback;
 	task->callback_arg = NULL;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void init_problem(void)

+ 2 - 1
examples/axpy/axpy.c

@@ -149,7 +149,8 @@ int main(int argc, char **argv)
 		task->handles[0] = starpu_data_get_sub_data(handle_x, 1, b);
 		task->handles[1] = starpu_data_get_sub_data(handle_y, 1, b);
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	starpu_task_wait_for_all();

+ 2 - 1
examples/basic_examples/hello_world.c

@@ -109,7 +109,8 @@ int main(int argc, char **argv)
 	task->synchronous = 1;
 
 	/* submit the task to StarPU */
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	/* destroy the task */
 	starpu_task_destroy(task);

+ 3 - 1
examples/basic_examples/mult.c

@@ -276,6 +276,7 @@ static struct starpu_codelet cl =
 
 static void launch_tasks(void)
 {
+	int ret;
 	/* partition the work into slices */
 	unsigned taskx, tasky;
 
@@ -327,7 +328,8 @@ static void launch_tasks(void)
 			task->handles[2] = starpu_data_get_sub_data(C_handle, 2, taskx, tasky);
 
 			/* this is not a blocking call since task->synchronous = 0 */
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 	}
 }

+ 2 - 1
examples/basic_examples/vector_scal.c

@@ -140,7 +140,8 @@ int main(int argc, char **argv)
 	task->cl_arg_size = sizeof(factor);
 
 	/* execute the task on any eligible computational ressource */
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	/* StarPU does not need to manipulate the array anymore so we can stop
  	 * monitoring it */

+ 2 - 1
examples/basic_examples/vector_scal_c.c

@@ -97,7 +97,8 @@ void compute_(int *F_NX, float *vector)
 	task->cl_arg_size = sizeof(factor);
 
 	/* execute the task on any eligible computational ressource */
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	/* StarPU does not need to manipulate the array anymore so we can stop
  	 * monitoring it */

+ 7 - 2
examples/callback/callback.c

@@ -40,10 +40,14 @@ struct starpu_codelet cl =
 
 void callback_func(void *callback_arg)
 {
+	int ret;
+
 	struct starpu_task *task = starpu_task_create();
 	task->cl = &cl;
 	task->handles[0] = handle;
-	starpu_task_submit(task);
+
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 int main(int argc, char **argv)
@@ -62,7 +66,8 @@ int main(int argc, char **argv)
 	task->callback_arg = NULL;
 	task->handles[0] = handle;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	starpu_task_wait_for_all();
 	starpu_data_unregister(handle);

+ 45 - 32
examples/cg/cg_kernels.c

@@ -261,17 +261,21 @@ void dot_kernel(starpu_data_handle_t v1,
 		unsigned nblocks,
 		int use_reduction)
 {
+	int ret;
+
 	/* Blank the accumulation variable */
-	starpu_insert_task(&bzero_variable_cl, STARPU_W, s, 0);
+	ret = starpu_insert_task(&bzero_variable_cl, STARPU_W, s, 0);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 
 	unsigned b;
 	for (b = 0; b < nblocks; b++)
 	{
-		starpu_insert_task(&dot_kernel_cl,
-			use_reduction?STARPU_REDUX:STARPU_RW, s,
-			STARPU_R, starpu_data_get_sub_data(v1, 1, b),
-			STARPU_R, starpu_data_get_sub_data(v2, 1, b),
-			0);
+		ret = starpu_insert_task(&dot_kernel_cl,
+					 use_reduction?STARPU_REDUX:STARPU_RW, s,
+					 STARPU_R, starpu_data_get_sub_data(v1, 1, b),
+					 STARPU_R, starpu_data_get_sub_data(v2, 1, b),
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 	}
 }
 
@@ -407,13 +411,15 @@ void gemv_kernel(starpu_data_handle_t v1,
 		int use_reduction)
 {
 	unsigned b1, b2;
+	int ret;
 
 	for (b2 = 0; b2 < nblocks; b2++)
 	{
-		starpu_insert_task(&scal_kernel_cl,
-			STARPU_RW, starpu_data_get_sub_data(v1, 1, b2),
-			STARPU_VALUE, &p1, sizeof(p1),
-			0);
+		ret = starpu_insert_task(&scal_kernel_cl,
+					 STARPU_RW, starpu_data_get_sub_data(v1, 1, b2),
+					 STARPU_VALUE, &p1, sizeof(p1),
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 	}
 
 	for (b2 = 0; b2 < nblocks; b2++)
@@ -421,13 +427,14 @@ void gemv_kernel(starpu_data_handle_t v1,
 		for (b1 = 0; b1 < nblocks; b1++)
 		{
 			TYPE one = 1.0;
-			starpu_insert_task(&gemv_kernel_cl,
-				use_reduction?STARPU_REDUX:STARPU_RW,	starpu_data_get_sub_data(v1, 1, b2),
-				STARPU_R,	starpu_data_get_sub_data(matrix, 2, b2, b1),
-				STARPU_R,	starpu_data_get_sub_data(v2, 1, b1),
-				STARPU_VALUE,	&one,	sizeof(one),
-				STARPU_VALUE,	&p2,	sizeof(p2),
-				0);
+			ret = starpu_insert_task(&gemv_kernel_cl,
+						 use_reduction?STARPU_REDUX:STARPU_RW,	starpu_data_get_sub_data(v1, 1, b2),
+						 STARPU_R,	starpu_data_get_sub_data(matrix, 2, b2, b1),
+						 STARPU_R,	starpu_data_get_sub_data(v2, 1, b1),
+						 STARPU_VALUE,	&one,	sizeof(one),
+						 STARPU_VALUE,	&p2,	sizeof(p2),
+						 0);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 		}
 	}
 }
@@ -495,15 +502,17 @@ void scal_axpy_kernel(starpu_data_handle_t v1, TYPE p1,
 			starpu_data_handle_t v2, TYPE p2,
 			unsigned nblocks)
 {
+	int ret;
 	unsigned b;
 	for (b = 0; b < nblocks; b++)
 	{
-		starpu_insert_task(&scal_axpy_kernel_cl,
-			STARPU_RW, starpu_data_get_sub_data(v1, 1, b),
-			STARPU_R,  starpu_data_get_sub_data(v2, 1, b),
-			STARPU_VALUE, &p1, sizeof(p1),
-			STARPU_VALUE, &p2, sizeof(p2),
-			0);
+		ret = starpu_insert_task(&scal_axpy_kernel_cl,
+					 STARPU_RW, starpu_data_get_sub_data(v1, 1, b),
+					 STARPU_R,  starpu_data_get_sub_data(v2, 1, b),
+					 STARPU_VALUE, &p1, sizeof(p1),
+					 STARPU_VALUE, &p2, sizeof(p2),
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 	}
 }
 
@@ -565,14 +574,16 @@ void axpy_kernel(starpu_data_handle_t v1,
 		starpu_data_handle_t v2, TYPE p1,
 		unsigned nblocks)
 {
+	int ret;
 	unsigned b;
 	for (b = 0; b < nblocks; b++)
 	{
-		starpu_insert_task(&axpy_kernel_cl,
-			STARPU_RW, starpu_data_get_sub_data(v1, 1, b),
-			STARPU_R,  starpu_data_get_sub_data(v2, 1, b),
-			STARPU_VALUE, &p1, sizeof(p1),
-			0);
+		ret = starpu_insert_task(&axpy_kernel_cl,
+					 STARPU_RW, starpu_data_get_sub_data(v1, 1, b),
+					 STARPU_R,  starpu_data_get_sub_data(v2, 1, b),
+					 STARPU_VALUE, &p1, sizeof(p1),
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 	}
 }
 
@@ -625,12 +636,14 @@ static struct starpu_codelet copy_handle_cl =
 
 void copy_handle(starpu_data_handle_t dst, starpu_data_handle_t src, unsigned nblocks)
 {
+	int ret;
 	unsigned b;
 	for (b = 0; b < nblocks; b++)
 	{
-		starpu_insert_task(&copy_handle_cl,
-			STARPU_W, starpu_data_get_sub_data(dst, 1, b),
-			STARPU_R, starpu_data_get_sub_data(src, 1, b),
-			0);
+		ret = starpu_insert_task(&copy_handle_cl,
+					 STARPU_W, starpu_data_get_sub_data(dst, 1, b),
+					 STARPU_R, starpu_data_get_sub_data(src, 1, b),
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 	}
 } 

+ 13 - 4
examples/cholesky/cholesky_grain_tag.c

@@ -85,6 +85,8 @@ static struct starpu_codelet cl21 =
 
 static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, unsigned reclevel)
 {
+	int ret;
+
 	struct starpu_task *task = create_task(TAG21_AUX(k, j, reclevel));
 
 	task->cl = &cl21;
@@ -108,7 +110,8 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, u
 		starpu_tag_declare_deps(TAG21_AUX(k, j, reclevel), 1, TAG11_AUX(k, reclevel));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl22 =
@@ -125,6 +128,8 @@ static struct starpu_codelet cl22 =
 
 static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned j, unsigned reclevel)
 {
+	int ret;
+
 /*	FPRINTF(stdout, "task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22_AUX(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22_AUX(k, i, j, reclevel));
@@ -151,7 +156,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 		starpu_tag_declare_deps(TAG22_AUX(k, i, j, reclevel), 2, TAG21_AUX(k, i, reclevel), TAG21_AUX(k, j, reclevel));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 
@@ -163,6 +169,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 
 static void cholesky_grain_rec(float *matA, unsigned size, unsigned ld, unsigned nblocks, unsigned nbigblocks, unsigned reclevel)
 {
+	int ret;
+
 	/* create a new codelet */
 	struct starpu_task *entry_task = NULL;
 
@@ -201,7 +209,8 @@ static void cholesky_grain_rec(float *matA, unsigned size, unsigned ld, unsigned
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 
 		for (j = k+1; j<nblocks; j++)
@@ -217,7 +226,7 @@ static void cholesky_grain_rec(float *matA, unsigned size, unsigned ld, unsigned
 	}
 
 	/* schedule the codelet */
-	int ret = starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
 	if (STARPU_UNLIKELY(ret == -ENODEV))
 	{
 		FPRINTF(stderr, "No worker may execute this task\n");

+ 21 - 17
examples/cholesky/cholesky_implicit.c

@@ -74,6 +74,7 @@ static void callback_turn_spmd_on(void *arg __attribute__ ((unused)))
 
 static void _cholesky(starpu_data_handle_t dataA, unsigned nblocks)
 {
+	int ret;
 	struct timeval start;
 	struct timeval end;
 
@@ -90,21 +91,23 @@ static void _cholesky(starpu_data_handle_t dataA, unsigned nblocks)
 	{
                 starpu_data_handle_t sdatakk = starpu_data_get_sub_data(dataA, 2, k, k);
 
-                starpu_insert_task(&cl11,
-                                   STARPU_PRIORITY, prio_level,
-                                   STARPU_RW, sdatakk,
-				   STARPU_CALLBACK, (k == 3*nblocks/4)?callback_turn_spmd_on:NULL,
-                                   0);
+                ret = starpu_insert_task(&cl11,
+					 STARPU_PRIORITY, prio_level,
+					 STARPU_RW, sdatakk,
+					 STARPU_CALLBACK, (k == 3*nblocks/4)?callback_turn_spmd_on:NULL,
+					 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 
 		for (j = k+1; j<nblocks; j++)
 		{
                         starpu_data_handle_t sdatakj = starpu_data_get_sub_data(dataA, 2, k, j);
 
-                        starpu_insert_task(&cl21,
-                                           STARPU_PRIORITY, (j == k+1)?prio_level:STARPU_DEFAULT_PRIO,
-                                           STARPU_R, sdatakk,
-                                           STARPU_RW, sdatakj,
-                                           0);
+                        ret = starpu_insert_task(&cl21,
+						 STARPU_PRIORITY, (j == k+1)?prio_level:STARPU_DEFAULT_PRIO,
+						 STARPU_R, sdatakk,
+						 STARPU_RW, sdatakj,
+						 0);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 
 			for (i = k+1; i<nblocks; i++)
 			{
@@ -112,13 +115,14 @@ static void _cholesky(starpu_data_handle_t dataA, unsigned nblocks)
                                 {
 					starpu_data_handle_t sdataki = starpu_data_get_sub_data(dataA, 2, k, i);
 					starpu_data_handle_t sdataij = starpu_data_get_sub_data(dataA, 2, i, j);
-					
-					starpu_insert_task(&cl22,
-                                                           STARPU_PRIORITY, ((i == k+1) && (j == k+1))?prio_level:STARPU_DEFAULT_PRIO,
-                                                           STARPU_R, sdataki,
-                                                           STARPU_R, sdatakj,
-                                                           STARPU_RW, sdataij,
-                                                           0);
+
+					ret = starpu_insert_task(&cl22,
+								 STARPU_PRIORITY, ((i == k+1) && (j == k+1))?prio_level:STARPU_DEFAULT_PRIO,
+								 STARPU_R, sdataki,
+								 STARPU_R, sdatakj,
+								 STARPU_RW, sdataij,
+								 0);
+					STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
                                 }
 			}
 		}

+ 14 - 4
examples/cholesky/cholesky_tile_tag.c

@@ -102,6 +102,8 @@ static struct starpu_codelet cl21 =
 
 static void create_task_21(unsigned k, unsigned j)
 {
+	int ret;
+
 	struct starpu_task *task = create_task(TAG21(k, j));
 
 	task->cl = &cl21;	
@@ -125,7 +127,8 @@ static void create_task_21(unsigned k, unsigned j)
 		starpu_tag_declare_deps(TAG21(k, j), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl22 =
@@ -149,6 +152,8 @@ static struct starpu_codelet cl22 =
 
 static void create_task_22(unsigned k, unsigned i, unsigned j)
 {
+	int ret;
+
 /*	FPRINTF(stdout, "task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22(k, i, j));
@@ -175,7 +180,8 @@ static void create_task_22(unsigned k, unsigned i, unsigned j)
 		starpu_tag_declare_deps(TAG22(k, i, j), 2, TAG21(k, i), TAG21(k, j));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 
@@ -187,6 +193,8 @@ static void create_task_22(unsigned k, unsigned i, unsigned j)
 
 static void cholesky_no_stride(void)
 {
+	int ret;
+
 	struct timeval start;
 	struct timeval end;
 
@@ -205,7 +213,8 @@ static void cholesky_no_stride(void)
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 		
 		for (j = k+1; j<nblocks; j++)
@@ -222,7 +231,8 @@ static void cholesky_no_stride(void)
 
 	/* schedule the codelet */
 	gettimeofday(&start, NULL);
-	starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	/* stall the application until the end of computations */
 	starpu_tag_wait(TAG11(nblocks-1));

+ 4 - 1
examples/filters/fmatrix.c

@@ -92,7 +92,10 @@ int main(int argc, char **argv)
                 task->synchronous = 1;
                 task->cl_arg = &factor;
                 task->cl_arg_size = sizeof(factor);
-		starpu_task_submit(task);
+
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
 		starpu_task_destroy(task);
 	}
 

+ 3 - 1
examples/filters/fvector.c

@@ -83,7 +83,9 @@ int main(int argc, char **argv)
                 task->cl_arg = &factor;
                 task->cl_arg_size = sizeof(factor);
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
 		starpu_task_destroy(task);
 	}
 

+ 32 - 12
examples/heat/dw_factolu.c

@@ -91,6 +91,7 @@ static struct starpu_codelet cl22 =
 
 void dw_callback_v2_codelet_update_u22(void *argcb)
 {
+	int ret;
 	cl_args *args = argcb;	
 
 	unsigned k = args->k;
@@ -122,7 +123,8 @@ void dw_callback_v2_codelet_update_u22(void *argcb)
 		if (!no_prio)
 			task->priority = STARPU_MAX_PRIO;
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	/* 11k+1 + 22k,k+1,j => 21 k+1,j */
@@ -154,7 +156,8 @@ void dw_callback_v2_codelet_update_u22(void *argcb)
 					task21->handles[0] = starpu_data_get_sub_data(args->dataA, 2, u21a->i, u21a->i);
 					task21->handles[1] = starpu_data_get_sub_data(args->dataA, 2, u21a->i, u21a->k);
 
-					starpu_task_submit(task21);
+					ret = starpu_task_submit(task21);
+					STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 				}
 		}
 	}
@@ -188,7 +191,8 @@ void dw_callback_v2_codelet_update_u22(void *argcb)
 					task12->handles[0] = starpu_data_get_sub_data(args->dataA, 2, u12a->i, u12a->i);
 					task12->handles[1] = starpu_data_get_sub_data(args->dataA, 2, u12a->k, u12a->i);
 
-					starpu_task_submit(task12);
+					ret = starpu_task_submit(task12);
+					STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 				}
 		}
 	}
@@ -198,6 +202,7 @@ void dw_callback_v2_codelet_update_u22(void *argcb)
 
 void dw_callback_v2_codelet_update_u12(void *argcb)
 {
+	int ret;
 	cl_args *args = argcb;	
 
 	/* now launch the update of LU22 */
@@ -244,7 +249,8 @@ void dw_callback_v2_codelet_update_u12(void *argcb)
 				if (!no_prio && (slicey == i+1))
 					task22->priority = STARPU_MAX_PRIO;
 
-				starpu_task_submit(task22);
+				ret = starpu_task_submit(task22);
+				STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 			}
 		}
 	}
@@ -252,6 +258,7 @@ void dw_callback_v2_codelet_update_u12(void *argcb)
 
 void dw_callback_v2_codelet_update_u21(void *argcb)
 {
+	int ret;
 	cl_args *args = argcb;	
 
 	/* now launch the update of LU22 */
@@ -299,7 +306,8 @@ void dw_callback_v2_codelet_update_u21(void *argcb)
 				if (!no_prio && (slicex == i+1))
 					task22->priority = STARPU_MAX_PRIO;
 
-				starpu_task_submit(task22);
+				ret = starpu_task_submit(task22);
+				STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 			}
 		}
 	}
@@ -307,6 +315,7 @@ void dw_callback_v2_codelet_update_u21(void *argcb)
 
 void dw_callback_v2_codelet_update_u11(void *argcb)
 {
+	int ret;
 	/* in case there remains work, go on */
 	cl_args *args = argcb;
 
@@ -368,7 +377,8 @@ void dw_callback_v2_codelet_update_u11(void *argcb)
 					if (!no_prio && (slice == i +1))
 						task12->priority = STARPU_MAX_PRIO;
 
-					starpu_task_submit(task12);
+					ret = starpu_task_submit(task12);
+					STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 				}
 			}
 
@@ -407,7 +417,8 @@ void dw_callback_v2_codelet_update_u11(void *argcb)
 					if (!no_prio && (slice == i +1))
 						task21->priority = STARPU_MAX_PRIO;
 
-					starpu_task_submit(task21);
+					ret = starpu_task_submit(task21);
+					STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 				}
 			}
 		}
@@ -423,6 +434,7 @@ void dw_callback_v2_codelet_update_u11(void *argcb)
 
 void dw_callback_codelet_update_u11(void *argcb)
 {
+	int ret;
 	/* in case there remains work, go on */
 	cl_args *args = argcb;
 
@@ -484,8 +496,10 @@ void dw_callback_codelet_update_u11(void *argcb)
 			task21->handles[0] = starpu_data_get_sub_data(args->dataA, 2, u21a->i, u21a->i);
 			task21->handles[1] = starpu_data_get_sub_data(args->dataA, 2, u21a->i, u21a->k);
 
-			starpu_task_submit(task12);
-			starpu_task_submit(task21);
+			ret = starpu_task_submit(task12);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+			ret = starpu_task_submit(task21);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 	}
 }
@@ -493,6 +507,7 @@ void dw_callback_codelet_update_u11(void *argcb)
 
 void dw_callback_codelet_update_u22(void *argcb)
 {
+	int ret;
 	cl_args *args = argcb;	
 
 	if (STARPU_ATOMIC_ADD(args->remaining, (-1)) == 0)
@@ -516,7 +531,8 @@ void dw_callback_codelet_update_u22(void *argcb)
 		u11arg->nblocks = args->nblocks;
 
 		/* schedule the codelet */
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	free(args);
@@ -524,6 +540,7 @@ void dw_callback_codelet_update_u22(void *argcb)
 
 void dw_callback_codelet_update_u12_21(void *argcb)
 {
+	int ret;
 	cl_args *args = argcb;	
 
 	if (STARPU_ATOMIC_ADD(args->remaining, -1) == 0)
@@ -562,7 +579,8 @@ void dw_callback_codelet_update_u12_21(void *argcb)
 				task22->handles[2] = starpu_data_get_sub_data(args->dataA, 2, u22a->i, u22a->j);
 
 				/* schedule that codelet */
-				starpu_task_submit(task22);
+				ret = starpu_task_submit(task22);
+				STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 			}
 		}
 	}
@@ -576,6 +594,7 @@ void dw_callback_codelet_update_u12_21(void *argcb)
 
 void dw_codelet_facto(starpu_data_handle_t dataA, unsigned nblocks)
 {
+	int ret;
 	cl_args *args = malloc(sizeof(cl_args));
 
 	args->i = 0;
@@ -594,7 +613,8 @@ void dw_codelet_facto(starpu_data_handle_t dataA, unsigned nblocks)
 	task->handles[0] = starpu_data_get_sub_data(dataA, 2, 0, 0);
 
 	/* schedule the codelet */
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	/* stall the application until the end of computations */
 	pthread_mutex_lock(&mutex);

+ 15 - 6
examples/heat/dw_factolu_grain.c

@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2009, 2010-2011  Université de Bordeaux 1
  * Copyright (C) 2010  Mehdi Juhoor <mjuhoor@gmail.com>
- * Copyright (C) 2010, 2011  Centre National de la Recherche Scientifique
+ * Copyright (C) 2010, 2011, 2012  Centre National de la Recherche Scientifique
  *
  * 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
@@ -91,6 +91,8 @@ static struct starpu_codelet cl12 =
 
 static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned tag_prefix)
 {
+	int ret;
+
 /*	FPRINTF(stdout, "task 12 k,i = %d,%d TAG = %llx\n", k,i, TAG12(k,i)); */
 
 	struct starpu_task *task = create_task(TAG12(k, i, tag_prefix));
@@ -116,7 +118,8 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 		starpu_tag_declare_deps(TAG12(k, i, tag_prefix), 1, TAG11(k, tag_prefix));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl21 =
@@ -133,6 +136,7 @@ static struct starpu_codelet cl21 =
 
 static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, unsigned tag_prefix)
 {
+	int ret;
 	struct starpu_task *task = create_task(TAG21(k, j, tag_prefix));
 
 	task->cl = &cl21;
@@ -156,7 +160,8 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, u
 		starpu_tag_declare_deps(TAG21(k, j, tag_prefix), 1, TAG11(k, tag_prefix));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl22 =
@@ -173,6 +178,7 @@ static struct starpu_codelet cl22 =
 
 static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned j, unsigned tag_prefix)
 {
+	int ret;
 /*	FPRINTF(stdout, "task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22(k, i, j, tag_prefix));
@@ -199,12 +205,14 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 		starpu_tag_declare_deps(TAG22(k, i, j, tag_prefix), 2, TAG12(k, i, tag_prefix), TAG21(k, j, tag_prefix));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void dw_factoLU_grain_inner(float *matA, unsigned size, unsigned inner_size,
 				unsigned ld, unsigned blocksize, unsigned tag_prefix)
 {
+	int ret;
 	/*
 	 * (re)partition data
 	 */
@@ -253,7 +261,8 @@ static void dw_factoLU_grain_inner(float *matA, unsigned size, unsigned inner_si
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 		
 		for (i = k+1; i<nblocks; i++)
@@ -271,7 +280,7 @@ static void dw_factoLU_grain_inner(float *matA, unsigned size, unsigned inner_si
 		}
 	}
 
-	int ret = starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
 	if (STARPU_UNLIKELY(ret == -ENODEV))
 	{
 		FPRINTF(stderr, "No worker may execute this task\n");

+ 17 - 6
examples/heat/dw_factolu_tag.c

@@ -2,7 +2,7 @@
  *
  * Copyright (C) 2009, 2010-2011  Université de Bordeaux 1
  * Copyright (C) 2010  Mehdi Juhoor <mjuhoor@gmail.com>
- * Copyright (C) 2010, 2011  Centre National de la Recherche Scientifique
+ * Copyright (C) 2010, 2011, 2012  Centre National de la Recherche Scientifique
  *
  * 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
@@ -94,6 +94,8 @@ static struct starpu_codelet cl12 =
 
 static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i)
 {
+	int ret;
+
 /*	printf("task 12 k,i = %d,%d TAG = %llx\n", k,i, TAG12(k,i)); */
 
 	struct starpu_task *task = create_task(TAG12(k, i));
@@ -119,7 +121,8 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i)
 		starpu_tag_declare_deps(TAG12(k, i), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl21 =
@@ -136,6 +139,7 @@ static struct starpu_codelet cl21 =
 
 static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j)
 {
+	int ret;
 	struct starpu_task *task = create_task(TAG21(k, j));
 
 	task->cl = &cl21;
@@ -159,7 +163,8 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j)
 		starpu_tag_declare_deps(TAG21(k, j), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_codelet cl22 =
@@ -176,6 +181,8 @@ static struct starpu_codelet cl22 =
 
 static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned j)
 {
+	int ret;
+
 /*	printf("task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22(k, i, j));
@@ -202,7 +209,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 		starpu_tag_declare_deps(TAG22(k, i, j), 2, TAG12(k, i), TAG21(k, j));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*
@@ -211,6 +219,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 
 static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 {
+	int ret;
+
 	struct timeval start;
 	struct timeval end;
 
@@ -230,7 +240,8 @@ static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 		
 		for (i = k+1; i<nblocks; i++)
@@ -250,7 +261,7 @@ static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 
 	/* schedule the codelet */
 	gettimeofday(&start, NULL);
-	int ret = starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
 	if (STARPU_UNLIKELY(ret == -ENODEV))
 	{
 		FPRINTF(stderr, "No worker may execute this task\n");

+ 22 - 9
examples/heat/dw_sparse_cg.c

@@ -132,6 +132,8 @@ void init_problem(void)
 
 void init_cg(struct cg_problem *problem) 
 {
+	int ret;
+
 	problem->i = 0;
 
 	/* r = b  - A x */
@@ -181,9 +183,12 @@ void init_cg(struct cg_problem *problem)
 	starpu_tag_declare_deps((starpu_tag_t)3UL, 1, (starpu_tag_t)2UL);
 
 	/* launch the computation now */
-	starpu_task_submit(task1);
-	starpu_task_submit(task2);
-	starpu_task_submit(task3);
+	ret = starpu_task_submit(task1);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task2);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task3);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*
@@ -193,6 +198,8 @@ void init_cg(struct cg_problem *problem)
 
 void launch_new_cg_iteration(struct cg_problem *problem)
 {
+	int ret;
+
 	unsigned iter = problem->i;
 
 	unsigned long long maskiter = (iter*1024);
@@ -296,12 +303,18 @@ void launch_new_cg_iteration(struct cg_problem *problem)
 	task9->callback_arg = problem;
 	
 	/* launch the computation now */
-	starpu_task_submit(task4);
-	starpu_task_submit(task5);
-	starpu_task_submit(task6);
-	starpu_task_submit(task7);
-	starpu_task_submit(task8);
-	starpu_task_submit(task9);
+	ret = starpu_task_submit(task4);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task5);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task6);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task7);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task8);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	ret = starpu_task_submit(task9);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 void iteration_cg(void *problem)

+ 15 - 5
examples/lu/xlu.c

@@ -74,6 +74,8 @@ static struct starpu_task *create_task_11(starpu_data_handle_t dataA, unsigned k
 
 static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned j)
 {
+	int ret;
+
 /*	printf("task 12 k,i = %d,%d TAG = %llx\n", k,i, TAG12(k,i)); */
 
 	struct starpu_task *task = create_task(TAG12(k, j));
@@ -99,11 +101,13 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned j)
 		starpu_tag_declare_deps(TAG12(k, j), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned i)
 {
+	int ret;
 	struct starpu_task *task = create_task(TAG21(k, i));
 
 	task->cl = &cl21;
@@ -127,11 +131,14 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned i)
 		starpu_tag_declare_deps(TAG21(k, i), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned j)
 {
+	int ret;
+
 /*	printf("task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22(k, i, j));
@@ -158,7 +165,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 		starpu_tag_declare_deps(TAG22(k, i, j), 2, TAG12(k, j), TAG21(k, i));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*
@@ -167,6 +175,7 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 
 static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 {
+	int ret;
 	struct timeval start;
 	struct timeval end;
 
@@ -186,7 +195,8 @@ static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 		
 		for (i = k+1; i<nblocks; i++)
@@ -206,7 +216,7 @@ static void dw_codelet_facto_v3(starpu_data_handle_t dataA, unsigned nblocks)
 
 	/* schedule the codelet */
 	gettimeofday(&start, NULL);
-	int ret = starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
 	if (STARPU_UNLIKELY(ret == -ENODEV))
 	{
 		FPRINTF(stderr, "No worker may execute this task\n");

+ 12 - 4
examples/lu/xlu_implicit.c

@@ -23,6 +23,7 @@ static unsigned no_prio = 0;
 
 static void create_task_11(starpu_data_handle_t dataA, unsigned k)
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 	task->cl = &cl11;
 
@@ -33,11 +34,13 @@ static void create_task_11(starpu_data_handle_t dataA, unsigned k)
 	if (!no_prio)
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned j)
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 	task->cl = &cl12;
 
@@ -48,11 +51,13 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned j)
 	if (!no_prio && (j == k+1))
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned i)
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl21;
@@ -64,11 +69,13 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned i)
 	if (!no_prio && (i == k+1))
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, unsigned j)
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl22;
@@ -81,7 +88,8 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
 	if (!no_prio &&  (i == k + 1) && (j == k +1) )
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*

+ 18 - 6
examples/lu/xlu_implicit_pivot.c

@@ -30,6 +30,8 @@ static void create_task_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 					unsigned k, unsigned i,
 					starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl_pivot;
@@ -43,13 +45,16 @@ static void create_task_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 	if (!no_prio && (i == k+1))
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_11_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 					unsigned k, struct piv_s *piv_description,
 					starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl11_pivot;
@@ -63,14 +68,16 @@ static void create_task_11_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 	if (!no_prio)
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_12(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned j,
 		starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
-	
+
 	task->cl = &cl12;
 
 	/* which sub-data is manipulated ? */
@@ -80,12 +87,14 @@ static void create_task_12(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 	if (!no_prio && (j == k+1))
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_21(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned i,
 				starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl21;
@@ -97,12 +106,14 @@ static void create_task_21(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 	if (!no_prio && (i == k+1))
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_22(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned i, unsigned j,
 				starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
 	struct starpu_task *task = starpu_task_create();
 
 	task->cl = &cl22;
@@ -115,7 +126,8 @@ static void create_task_22(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 	if (!no_prio &&  (i == k + 1) && (j == k +1) )
 		task->priority = STARPU_MAX_PRIO;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*

+ 21 - 6
examples/lu/xlu_pivot.c

@@ -51,6 +51,8 @@ static void create_task_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 					unsigned k, unsigned i,
 					starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 	struct starpu_task *task = create_task(PIVOT(k, i));
 
 	task->cl = &cl_pivot;
@@ -91,7 +93,8 @@ static void create_task_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
 		}
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static struct starpu_task *create_task_11_pivot(starpu_data_handle_t *dataAp, unsigned nblocks,
@@ -123,6 +126,8 @@ static struct starpu_task *create_task_11_pivot(starpu_data_handle_t *dataAp, un
 static void create_task_12(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned j,
 		starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 /*	printf("task 12 k,i = %d,%d TAG = %llx\n", k,i, TAG12(k,i)); */
 
 	struct starpu_task *task = create_task(TAG12(k, j));
@@ -153,12 +158,15 @@ static void create_task_12(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 		starpu_tag_declare_deps(TAG12(k, j), 1, TAG11(k));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_21(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned i,
 				starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 	struct starpu_task *task = create_task(TAG21(k, i));
 
 	task->cl = &cl21;
@@ -177,12 +185,15 @@ static void create_task_21(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 	/* enforce dependencies ... */
 	starpu_tag_declare_deps(TAG21(k, i), 1, PIVOT(k, i));
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 static void create_task_22(starpu_data_handle_t *dataAp, unsigned nblocks, unsigned k, unsigned i, unsigned j,
 				starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 /*	printf("task 22 k,i,j = %d,%d,%d TAG = %llx\n", k,i,j, TAG22(k,i,j)); */
 
 	struct starpu_task *task = create_task(TAG22(k, i, j));
@@ -211,7 +222,8 @@ static void create_task_22(starpu_data_handle_t *dataAp, unsigned nblocks, unsig
 		starpu_tag_declare_deps(TAG22(k, i, j), 2, TAG12(k, j), TAG21(k, i));
 	}
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 }
 
 /*
@@ -223,6 +235,8 @@ static double dw_codelet_facto_pivot(starpu_data_handle_t *dataAp,
 					unsigned nblocks,
 					starpu_data_handle_t (* get_block)(starpu_data_handle_t *, unsigned, unsigned, unsigned))
 {
+	int ret;
+
 	struct timeval start;
 	struct timeval end;
 
@@ -242,7 +256,8 @@ static double dw_codelet_facto_pivot(starpu_data_handle_t *dataAp,
 		}
 		else
 		{
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 
 		for (i = 0; i < nblocks; i++)
@@ -282,7 +297,7 @@ static double dw_codelet_facto_pivot(starpu_data_handle_t *dataAp,
 
 	/* schedule the codelet */
 	gettimeofday(&start, NULL);
-	int ret = starpu_task_submit(entry_task);
+	ret = starpu_task_submit(entry_task);
 	if (STARPU_UNLIKELY(ret == -ENODEV))
 	{
 		FPRINTF(stderr, "No worker may execute this task\n");

+ 10 - 8
examples/mandelbrot/mandelbrot.c

@@ -519,6 +519,7 @@ int main(int argc, char **argv)
 
 	while (niter-- != 0)
 	{
+		int ret;
 		double stepX = (rightX - leftX)/width;
 		double stepY = (topY - bottomY)/height;
 
@@ -533,14 +534,15 @@ int main(int argc, char **argv)
 			per_block_cnt[iby] = 0;
 			int *pcnt = &per_block_cnt[iby];
 
-			starpu_insert_task(use_spmd?&spmd_mandelbrot_cl:&mandelbrot_cl,
-				STARPU_VALUE, &iby, sizeof(iby),
-				STARPU_VALUE, &block_size, sizeof(block_size),
-				STARPU_VALUE, &stepX, sizeof(stepX),
-				STARPU_VALUE, &stepY, sizeof(stepY),
-				STARPU_W, block_handles[iby],
-				STARPU_VALUE, &pcnt, sizeof(int *),
-				0);
+			ret = starpu_insert_task(use_spmd?&spmd_mandelbrot_cl:&mandelbrot_cl,
+						 STARPU_VALUE, &iby, sizeof(iby),
+						 STARPU_VALUE, &block_size, sizeof(block_size),
+						 STARPU_VALUE, &stepX, sizeof(stepX),
+						 STARPU_VALUE, &stepY, sizeof(stepY),
+						 STARPU_W, block_handles[iby],
+						 STARPU_VALUE, &pcnt, sizeof(int *),
+						 0);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_insert_task");
 		}
 
 		for (iby = 0; iby < nblocks; iby++)

+ 3 - 1
examples/openmp/vector_scal.c

@@ -96,7 +96,9 @@ int main(int argc, char **argv)
 	task->cl_arg = &factor;
 	task->cl_arg_size = sizeof(factor);
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+
 	starpu_data_unregister(vector_handle);
 
 	starpu_task_destroy(task);

+ 6 - 3
examples/ppm_downscaler/yuv_downscaler.c

@@ -224,7 +224,8 @@ int main(int argc, char **argv)
 			/* output */
 			task->handles[1] = starpu_data_get_sub_data(new_frame_y_handle[frame], 1, blocky);
 
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 
 		unsigned blocku;
@@ -239,7 +240,8 @@ int main(int argc, char **argv)
 			/* output */
 			task->handles[1] = starpu_data_get_sub_data(new_frame_u_handle[frame], 1, blocku);
 
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 
 		unsigned blockv;
@@ -254,7 +256,8 @@ int main(int argc, char **argv)
 			/* output */
 			task->handles[1] = starpu_data_get_sub_data(new_frame_v_handle[frame], 1, blockv);
 
-			starpu_task_submit(task);
+			ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 	}
 

+ 2 - 1
examples/scheduler/dummy_sched.c

@@ -138,7 +138,8 @@ int main(int argc, char **argv)
 		task->cl = &dummy_codelet;
 		task->cl_arg = NULL;
 	
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	starpu_task_wait_for_all();

+ 3 - 1
examples/spmv/dw_block_spmv.c

@@ -156,6 +156,7 @@ void launch_spmv_codelets(void)
 {
 	struct starpu_task *task_tab;
 	uint8_t *is_entry_tab;
+	int ret;
 
 	/* we call one codelet per block */
 	unsigned nblocks = starpu_bcsr_get_nnz(sparse_matrix); 
@@ -246,7 +247,8 @@ void launch_spmv_codelets(void)
 			nchains++;
 		}
 
-		starpu_task_submit(&task_tab[task]);
+		ret = starpu_task_submit(&task_tab[task]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	printf("end of task submission (there was %d chains for %d tasks : ratio %d tasks per chain) !\n", nchains, totaltasks, totaltasks/nchains);

+ 17 - 8
examples/starpufft/starpufftx1d.c

@@ -771,22 +771,30 @@ STARPUFFT(start1dC2C)(STARPUFFT(plan) plan, starpu_data_handle_t in, starpu_data
 {
 	STARPU_ASSERT(plan->type == C2C);
 	int z;
+	int ret;
 
 if (PARALLEL) {
 	for (z=0; z < plan->totsize1; z++) {
-		starpu_task_submit(plan->twist1_tasks[z]);
-		starpu_task_submit(plan->fft1_tasks[z]);
+		ret = starpu_task_submit(plan->twist1_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->fft1_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
-	starpu_task_submit(plan->join_task);
+	ret = starpu_task_submit(plan->join_task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	for (z=0; z < plan->totsize3; z++) {
-		starpu_task_submit(plan->twist2_tasks[z]);
-		starpu_task_submit(plan->fft2_tasks[z]);
-		starpu_task_submit(plan->twist3_tasks[z]);
+		ret = starpu_task_submit(plan->twist2_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->fft2_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->twist3_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
-	starpu_task_submit(plan->end_task);
+	ret = starpu_task_submit(plan->end_task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	return plan->end_task;
 } else /* !PARALLEL */ {
@@ -799,7 +807,8 @@ if (PARALLEL) {
 	task->handles[1] = out;
 	task->cl_arg = plan;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	return task;
 }
 }

+ 17 - 8
examples/starpufft/starpufftx2d.c

@@ -769,22 +769,30 @@ STARPUFFT(start2dC2C)(STARPUFFT(plan) plan, starpu_data_handle_t in, starpu_data
 {
 	STARPU_ASSERT(plan->type == C2C);
 	int z;
+	int ret;
 
 if (PARALLEL) {
 	for (z=0; z < plan->totsize1; z++) {
-		starpu_task_submit(plan->twist1_tasks[z]);
-		starpu_task_submit(plan->fft1_tasks[z]);
+		ret = starpu_task_submit(plan->twist1_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->fft1_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
-	starpu_task_submit(plan->join_task);
+	ret = starpu_task_submit(plan->join_task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	for (z=0; z < plan->totsize3; z++) {
-		starpu_task_submit(plan->twist2_tasks[z]);
-		starpu_task_submit(plan->fft2_tasks[z]);
-		starpu_task_submit(plan->twist3_tasks[z]);
+		ret = starpu_task_submit(plan->twist2_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->fft2_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+		ret = starpu_task_submit(plan->twist3_tasks[z]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
-	starpu_task_submit(plan->end_task);
+	ret = starpu_task_submit(plan->end_task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 
 	return plan->end_task;
 } else /* !PARALLEL */ {
@@ -797,7 +805,8 @@ if (PARALLEL) {
 	task->handles[1] = out;
 	task->cl_arg = plan;
 
-	starpu_task_submit(task);
+	ret = starpu_task_submit(task);
+	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	return task;
 }
 }

+ 5 - 2
examples/tag_example/tag_example.c

@@ -89,6 +89,7 @@ static void tag_cleanup_grid(unsigned ni, unsigned nj, unsigned iter)
 static void create_task_grid(unsigned iter)
 {
 	unsigned i, j;
+	int ret;
 
 /*	FPRINTF(stderr, "start iter %d...\n", iter); */
 	callback_cnt = (ni*nj);
@@ -110,7 +111,8 @@ static void create_task_grid(unsigned iter)
 		/* express deps : (i,j) depends on (i-1, j-1) & (i-1, j+1) */
 		express_deps(i, j, iter);
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 	/* create entry tasks */
@@ -126,7 +128,8 @@ static void create_task_grid(unsigned iter)
 		/* this is an entry task */
 		task->tag_id = TAG(0, j, iter);
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 }

+ 3 - 1
examples/tag_example/tag_example2.c

@@ -73,6 +73,7 @@ static void tag_cleanup_grid(unsigned ni, unsigned it)
 static void create_task_grid(unsigned it)
 {
 	unsigned i;
+	int ret;
 
 /*	FPRINTF(stderr, "start iter %d ni %d...\n", it, ni); */
 
@@ -90,7 +91,8 @@ static void create_task_grid(unsigned it)
 		if (i != 0)
 			starpu_tag_declare_deps(TAG(i,it), 1, TAG(i-1,it));
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 }

+ 3 - 1
examples/tag_example/tag_example3.c

@@ -78,6 +78,7 @@ static void tag_cleanup_grid(unsigned ni, unsigned iter)
 static void create_task_grid(unsigned iter)
 {
 	int i;
+	int ret;
 
 /*	FPRINTF(stderr, "start iter %d ni %d...\n", iter, ni); */
 
@@ -95,7 +96,8 @@ static void create_task_grid(unsigned iter)
 		if (i != 1)
 			starpu_tag_declare_deps(TAG(i,iter), 1, TAG(i-1,iter));
 
-		starpu_task_submit(task);
+		ret = starpu_task_submit(task);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 
 }

+ 5 - 2
examples/tag_example/tag_restartable.c

@@ -98,11 +98,14 @@ static void create_task_grid(unsigned iter)
 static void start_task_grid(unsigned iter)
 {
 	unsigned i;
+	int ret;
 
 	/* FPRINTF(stderr, "start grid %d ni %d...\n", iter, ni); */
 
-	for (i = 0; i < ni; i++)
-		starpu_task_submit(tasks[iter][i]);
+	for (i = 0; i < ni; i++) {
+		ret = starpu_task_submit(tasks[iter][i]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
+	}
 }
 
 void cpu_codelet(void *descr[], void *_args __attribute__((unused)))

+ 2 - 1
examples/top/hello_world_top.c

@@ -212,7 +212,8 @@ int main(int argc, char **argv)
 		if(number_of_addition==42)
 			starpu_top_debug_lock("debug stop point because of 42 !");
 
-		starpu_task_submit(task[i]);
+		ret = starpu_task_submit(task[i]);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 	}
 	/* terminate StarPU: statistics and other debug outputs are not
 	 * guaranteed to be generated unless this function is called. Once it