|
@@ -35,12 +35,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);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Create the codelets
|
|
|
*/
|
|
@@ -63,7 +57,7 @@ static starpu_codelet cl11 =
|
|
|
.model = &chol_model_11
|
|
|
};
|
|
|
|
|
|
-static struct starpu_task * create_task_11(unsigned k, unsigned nblocks, sem_t *sem)
|
|
|
+static struct starpu_task * create_task_11(unsigned k, unsigned nblocks)
|
|
|
{
|
|
|
// printf("task 11 k = %d TAG = %llx\n", k, (TAG11(k)));
|
|
|
|
|
@@ -83,12 +77,6 @@ static struct starpu_task * create_task_11(unsigned k, unsigned nblocks, sem_t *
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -198,10 +186,6 @@ static void dw_cholesky_no_stride(void)
|
|
|
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 */
|
|
@@ -209,7 +193,7 @@ static void dw_cholesky_no_stride(void)
|
|
|
|
|
|
for (k = 0; k < nblocks; k++)
|
|
|
{
|
|
|
- struct starpu_task *task = create_task_11(k, nblocks, &sem);
|
|
|
+ struct starpu_task *task = create_task_11(k, nblocks);
|
|
|
/* we defer the launch of the first task */
|
|
|
if (k == 0) {
|
|
|
entry_task = task;
|
|
@@ -235,8 +219,8 @@ static void dw_cholesky_no_stride(void)
|
|
|
starpu_task_submit(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));
|