Browse Source

mpi/examples/complex/mpi_complex.c: mix communication with predefined and user-defined datatypes

Nathalie Furmento 12 years ago
parent
commit
e41c313f72
1 changed files with 16 additions and 0 deletions
  1. 16 0
      mpi/examples/complex/mpi_complex.c

+ 16 - 0
mpi/examples/complex/mpi_complex.c

@@ -48,10 +48,17 @@ int main(int argc, char **argv)
 			starpu_data_handle_t handle2;
 			MPI_Status status;
 
+			// We send a dummy variable only to check communication with predefined datatypes
+			int foo=12;
+			starpu_data_handle_t foo_handle;
+
 			starpu_complex_data_register(&handle, 0, real, imaginary, 2);
 			starpu_insert_task(&cl_display, STARPU_R, handle, 0);
 			starpu_mpi_send(handle, 1, 10, MPI_COMM_WORLD);
 
+			starpu_variable_data_register(&foo_handle, 0, (uintptr_t)&foo, sizeof(foo));
+			starpu_mpi_send(foo_handle, 1, 10, MPI_COMM_WORLD);
+
 			starpu_complex_data_register(&handle2, -1, real2, imaginary2, 2);
 			starpu_mpi_recv(handle2, 1, 11, MPI_COMM_WORLD, &status);
 			starpu_insert_task(&cl_display, STARPU_R, handle2, 0);
@@ -64,9 +71,18 @@ int main(int argc, char **argv)
 			starpu_data_handle_t handle;
 			MPI_Status status;
 
+			// We send a dummy variable only to check communication with predefined datatypes
+			int foo=12;
+			starpu_data_handle_t foo_handle;
+
 			starpu_complex_data_register(&handle, 0, real, imaginary, 2);
 			starpu_mpi_recv(handle, 0, 10, MPI_COMM_WORLD, &status);
+
 			starpu_insert_task(&cl_display, STARPU_R, handle, 0);
+
+			starpu_variable_data_register(&foo_handle, -1, (uintptr_t)NULL, sizeof(foo));
+			starpu_mpi_recv(foo_handle, 0, 10, MPI_COMM_WORLD, &status);
+
 			starpu_mpi_send(handle, 0, 11, MPI_COMM_WORLD);
 		}
 	}