Prechádzať zdrojové kódy

mpi/starpu_mpi_insert_task.c: read parameters which are not used and deal with rank==-1

Nathalie Furmento 14 rokov pred
rodič
commit
743ae2173f
1 zmenil súbory, kde vykonal 39 pridanie a 3 odobranie
  1. 39 3
      mpi/starpu_mpi_insert_task.c

+ 39 - 3
mpi/starpu_mpi_insert_task.c

@@ -70,7 +70,7 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...) {
                                                 do_execute = 1;
                                         }
                                 }
-                                else {
+                                else if (mpi_rank != -1) {
                                         if (do_execute == 1) {
                                                 _STARPU_ERROR("erh? incoherent!\n");
                                         }
@@ -82,6 +82,18 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...) {
                                 }
                         }
                 }
+		else if (arg_type==STARPU_VALUE) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_CALLBACK) {
+			va_arg(varg_list, void (*)(void *));
+		}
+		else if (arg_type==STARPU_CALLBACK_ARG) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_PRIORITY) {
+			va_arg(varg_list, int);
+		}
 	}
 	va_end(varg_list);
         assert(do_execute != -1);
@@ -94,7 +106,7 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...) {
                         if (arg_type & STARPU_R) {
                                 int mpi_rank = starpu_data_get_rank(data);
                                 /* The task needs to read this data */
-                                if (do_execute && mpi_rank != me) {
+                                if (do_execute && mpi_rank != me && mpi_rank != -1) {
                                         _STARPU_MPI_DEBUG("Receive data from %d\n", mpi_rank);
                                         /* I will have to execute but I don't have the data, receive */
 #ifdef MPI_CACHE
@@ -112,6 +124,18 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...) {
                                 }
                         }
                 }
+		else if (arg_type==STARPU_VALUE) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_CALLBACK) {
+			va_arg(varg_list, void (*)(void *));
+		}
+		else if (arg_type==STARPU_CALLBACK_ARG) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_PRIORITY) {
+			va_arg(varg_list, int);
+		}
         }
 	va_end(varg_list);
 
@@ -149,12 +173,24 @@ int starpu_mpi_insert_task(MPI_Comm comm, starpu_codelet *codelet, ...) {
                         /* We allocated a temporary buffer for the received data, now drop it */
                         if ((arg_type & STARPU_R) && do_execute) {
                                 int mpi_rank = starpu_data_get_rank(data);
-                                if (mpi_rank != me) {
+                                if (mpi_rank != me && mpi_rank != -1) {
                                         //                                        starpu_deallocate(data);
                                 }
                         }
 #endif
                 }
+		else if (arg_type==STARPU_VALUE) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_CALLBACK) {
+			va_arg(varg_list, void (*)(void *));
+		}
+		else if (arg_type==STARPU_CALLBACK_ARG) {
+			va_arg(varg_list, void *);
+		}
+		else if (arg_type==STARPU_PRIORITY) {
+			va_arg(varg_list, int);
+		}
         }
 	va_end(varg_list);
 }