Kaynağa Gözat

increase the number of buffers and not the tasks

Corentin Salingue 8 yıl önce
ebeveyn
işleme
4427509320
2 değiştirilmiş dosya ile 7 ekleme ve 1 silme
  1. 3 0
      src/core/workers.c
  2. 4 1
      src/drivers/mp_common/source_common.c

+ 3 - 0
src/core/workers.c

@@ -535,6 +535,9 @@ static void _starpu_worker_init(struct _starpu_worker *workerarg, struct _starpu
 	starpu_pthread_wait_init(&workerarg->wait);
 	starpu_pthread_queue_register(&workerarg->wait, &_starpu_simgrid_task_queue[workerarg->workerid]);
 #endif
+    workerarg->task_sending = NULL;
+    workerarg->nb_buffers_sent = 0;
+
 	workerarg->first_task = 0;
 	workerarg->ntasks = 0;
 	/* set initialized by topology.c */

+ 4 - 1
src/drivers/mp_common/source_common.c

@@ -942,7 +942,7 @@ static void _starpu_src_common_send_data_callback(void *arg)
    struct _starpu_worker * worker = (struct _starpu_worker *) arg;
 
    /* increase the number of buffer received */
-   worker->task_sending++;
+   worker->nb_buffers_sent++;
 }
 
 
@@ -959,6 +959,7 @@ static void _starpu_src_common_worker_internal_work(struct _starpu_worker_set *
 
     /* Test if async transfers are completed */
     for (unsigned i = 0; i < worker_set->nworkers; i++)
+    {
         /* We send all buffers to execute the task */
         if (worker_set->workers[i].task_sending != NULL && worker_set->workers[i].nb_buffers_sent == STARPU_TASK_GET_NBUFFERS(worker_set->workers[i].task_sending))
         {
@@ -993,6 +994,7 @@ static void _starpu_src_common_worker_internal_work(struct _starpu_worker_set *
             worker_set->workers[i].task_sending = NULL;
             worker_set->workers[i].nb_buffers_sent = 0;
         }
+    }
 
     _STARPU_TRACE_START_PROGRESS(memnode);
     res |= __starpu_datawizard_progress(1, 1);
@@ -1042,6 +1044,7 @@ static void _starpu_src_common_worker_internal_work(struct _starpu_worker_set *
                                      _starpu_src_common_send_data_callback, &worker_set->workers[i], 0, "_starpu_src_common_worker_internal_work");
                     STARPU_ASSERT(!ret);
                 }
+                worker_set->workers[i].task_sending = tasks[i];
             }
         }
     }