|
@@ -44,6 +44,7 @@ static struct starpu_task *create_task(starpu_tag_t id)
|
|
|
|
|
|
static struct starpu_codelet cl11 =
|
|
|
{
|
|
|
+ .modes = { STARPU_RW },
|
|
|
.where = STARPU_CPU|STARPU_CUDA,
|
|
|
.cpu_funcs = {dw_cpu_codelet_update_u11, NULL},
|
|
|
#ifdef STARPU_USE_CUDA
|
|
@@ -62,8 +63,7 @@ static struct starpu_task *create_task_11(starpu_data_handle_t dataA, unsigned k
|
|
|
task->cl = &cl11;
|
|
|
|
|
|
/* which sub-data is manipulated ? */
|
|
|
- task->buffers[0].handle = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
- task->buffers[0].mode = STARPU_RW;
|
|
|
+ task->handles[0] = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
|
|
|
/* this is an important task */
|
|
|
task->priority = STARPU_MAX_PRIO;
|
|
@@ -79,6 +79,7 @@ static struct starpu_task *create_task_11(starpu_data_handle_t dataA, unsigned k
|
|
|
|
|
|
static struct starpu_codelet cl12 =
|
|
|
{
|
|
|
+ .modes = { STARPU_R, STARPU_RW },
|
|
|
.where = STARPU_CPU|STARPU_CUDA,
|
|
|
.cpu_funcs = {dw_cpu_codelet_update_u12, NULL},
|
|
|
#ifdef STARPU_USE_CUDA
|
|
@@ -97,10 +98,8 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i, u
|
|
|
task->cl = &cl12;
|
|
|
|
|
|
/* which sub-data is manipulated ? */
|
|
|
- task->buffers[0].handle = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
- task->buffers[0].mode = STARPU_R;
|
|
|
- task->buffers[1].handle = starpu_data_get_sub_data(dataA, 2, i, k);
|
|
|
- task->buffers[1].mode = STARPU_RW;
|
|
|
+ task->handles[0] = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
+ task->handles[1] = starpu_data_get_sub_data(dataA, 2, i, k);
|
|
|
|
|
|
if (i == k+1)
|
|
|
{
|
|
@@ -122,6 +121,7 @@ static void create_task_12(starpu_data_handle_t dataA, unsigned k, unsigned i, u
|
|
|
|
|
|
static struct starpu_codelet cl21 =
|
|
|
{
|
|
|
+ .modes = { STARPU_R, STARPU_RW },
|
|
|
.where = STARPU_CPU|STARPU_CUDA,
|
|
|
.cpu_funcs = {dw_cpu_codelet_update_u21, NULL},
|
|
|
#ifdef STARPU_USE_CUDA
|
|
@@ -138,10 +138,8 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, u
|
|
|
task->cl = &cl21;
|
|
|
|
|
|
/* which sub-data is manipulated ? */
|
|
|
- task->buffers[0].handle = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
- task->buffers[0].mode = STARPU_R;
|
|
|
- task->buffers[1].handle = starpu_data_get_sub_data(dataA, 2, k, j);
|
|
|
- task->buffers[1].mode = STARPU_RW;
|
|
|
+ task->handles[0] = starpu_data_get_sub_data(dataA, 2, k, k);
|
|
|
+ task->handles[1] = starpu_data_get_sub_data(dataA, 2, k, j);
|
|
|
|
|
|
if (j == k+1)
|
|
|
{
|
|
@@ -163,6 +161,7 @@ static void create_task_21(starpu_data_handle_t dataA, unsigned k, unsigned j, u
|
|
|
|
|
|
static struct starpu_codelet cl22 =
|
|
|
{
|
|
|
+ .modes = { STARPU_R, STARPU_R, STARPU_RW },
|
|
|
.where = STARPU_CPU|STARPU_CUDA,
|
|
|
.cpu_funcs = {dw_cpu_codelet_update_u22, NULL},
|
|
|
#ifdef STARPU_USE_CUDA
|
|
@@ -181,12 +180,9 @@ static void create_task_22(starpu_data_handle_t dataA, unsigned k, unsigned i, u
|
|
|
task->cl = &cl22;
|
|
|
|
|
|
/* which sub-data is manipulated ? */
|
|
|
- task->buffers[0].handle = starpu_data_get_sub_data(dataA, 2, i, k);
|
|
|
- task->buffers[0].mode = STARPU_R;
|
|
|
- task->buffers[1].handle = starpu_data_get_sub_data(dataA, 2, k, j);
|
|
|
- task->buffers[1].mode = STARPU_R;
|
|
|
- task->buffers[2].handle = starpu_data_get_sub_data(dataA, 2, i, j);
|
|
|
- task->buffers[2].mode = STARPU_RW;
|
|
|
+ task->handles[0] = starpu_data_get_sub_data(dataA, 2, i, k);
|
|
|
+ task->handles[1] = starpu_data_get_sub_data(dataA, 2, k, j);
|
|
|
+ task->handles[2] = starpu_data_get_sub_data(dataA, 2, i, j);
|
|
|
|
|
|
if ( (i == k + 1) && (j == k +1) )
|
|
|
{
|