Bladeren bron

StarPU-MPI: new function starpu_mpi_get_data_on_node()

Nathalie Furmento 14 jaren geleden
bovenliggende
commit
e7724a527a
2 gewijzigde bestanden met toevoegingen van 21 en 0 verwijderingen
  1. 1 0
      mpi/starpu_mpi.h
  2. 20 0
      mpi/starpu_mpi_insert_task.c

+ 1 - 0
mpi/starpu_mpi.h

@@ -37,6 +37,7 @@ int starpu_mpi_initialize_extended(int initialize_mpi, int *rank, int *world_siz
 int starpu_mpi_shutdown(void);
 
 int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...);
+void starpu_mpi_get_data_on_node(MPI_Comm comm, starpu_data_handle data_handle, int node);
 
 /* Some helper functions */
 

+ 20 - 0
mpi/starpu_mpi_insert_task.c

@@ -395,3 +395,23 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...)
         _STARPU_MPI_LOG_OUT();
         return 0;
 }
+
+void starpu_mpi_get_data_on_node(MPI_Comm comm, starpu_data_handle data_handle, int node)
+{
+        int me, rank;
+
+        rank = starpu_data_get_rank(data_handle);
+	MPI_Comm_rank(comm, &me);
+
+        if (node == rank) return;
+
+        if (me == node)
+        {
+                starpu_mpi_irecv_detached(data_handle, rank, 42, comm, NULL, NULL);
+        }
+        else if (me == rank)
+        {
+                starpu_mpi_isend_detached(data_handle, node, 42, comm, NULL, NULL);
+        }
+        starpu_task_wait_for_all();
+}