|
@@ -40,12 +40,6 @@ static struct starpu_task *create_task(starpu_tag_t id)
|
|
|
return task;
|
|
|
}
|
|
|
|
|
|
-static void terminal_callback(void *argcb)
|
|
|
-{
|
|
|
- sem_t *sem = argcb;
|
|
|
- sem_post(sem);
|
|
|
-}
|
|
|
-
|
|
|
static starpu_codelet cl11 = {
|
|
|
.where = ANY,
|
|
|
.core_func = dw_core_codelet_update_u11,
|
|
@@ -56,7 +50,7 @@ static starpu_codelet cl11 = {
|
|
|
.model = &model_11
|
|
|
};
|
|
|
|
|
|
-static struct starpu_task *create_task_11(starpu_data_handle dataA, unsigned k, unsigned nblocks, sem_t *sem)
|
|
|
+static struct starpu_task *create_task_11(starpu_data_handle dataA, unsigned k)
|
|
|
{
|
|
|
// printf("task 11 k = %d TAG = %llx\n", k, (TAG11(k)));
|
|
|
|
|
@@ -76,12 +70,6 @@ static struct starpu_task *create_task_11(starpu_data_handle dataA, unsigned k,
|
|
|
starpu_tag_declare_deps(TAG11(k), 1, TAG22(k-1, k, k));
|
|
|
}
|
|
|
|
|
|
- /* the very last task must be notified */
|
|
|
- if (k == nblocks -1) {
|
|
|
- task->callback_func = terminal_callback;
|
|
|
- task->callback_arg = sem;
|
|
|
- }
|
|
|
-
|
|
|
return task;
|
|
|
}
|
|
|
|
|
@@ -211,10 +199,6 @@ static void dw_codelet_facto_v3(starpu_data_handle dataA, unsigned nblocks)
|
|
|
struct timeval start;
|
|
|
struct timeval end;
|
|
|
|
|
|
- /* create a new codelet */
|
|
|
- sem_t sem;
|
|
|
- sem_init(&sem, 0, 0U);
|
|
|
-
|
|
|
struct starpu_task *entry_task = NULL;
|
|
|
|
|
|
/* create all the DAG nodes */
|
|
@@ -222,7 +206,7 @@ static void dw_codelet_facto_v3(starpu_data_handle dataA, unsigned nblocks)
|
|
|
|
|
|
for (k = 0; k < nblocks; k++)
|
|
|
{
|
|
|
- struct starpu_task *task = create_task_11(dataA, k, nblocks, &sem);
|
|
|
+ struct starpu_task *task = create_task_11(dataA, k);
|
|
|
|
|
|
/* we defer the launch of the first task */
|
|
|
if (k == 0) {
|
|
@@ -252,8 +236,8 @@ static void dw_codelet_facto_v3(starpu_data_handle dataA, unsigned nblocks)
|
|
|
starpu_submit_task(entry_task);
|
|
|
|
|
|
/* stall the application until the end of computations */
|
|
|
- sem_wait(&sem);
|
|
|
- sem_destroy(&sem);
|
|
|
+ starpu_tag_wait(TAG11(nblocks-1));
|
|
|
+
|
|
|
gettimeofday(&end, NULL);
|
|
|
|
|
|
double timing = (double)((end.tv_sec - start.tv_sec)*1000000 + (end.tv_usec - start.tv_usec));
|