Browse Source

Take benefit from mpi cache flushing

Samuel Thibault 11 years ago
parent
commit
f5dd1b71ed

+ 5 - 1
mpi/examples/matrix_decomposition/mpi_cholesky_codelets.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009, 2010  Université de Bordeaux 1
+ * Copyright (C) 2009, 2010, 2014  Université de Bordeaux 1
  * Copyright (C) 2010, 2011, 2012, 2013  Centre National de la Recherche Scientifique
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -127,6 +127,8 @@ void dw_cholesky(float ***matA, unsigned ld, int rank, int nodes, double *timing
 					       STARPU_RW, data_handles[k][j],
 					       0);
 
+			starpu_mpi_cache_flush(MPI_COMM_WORLD, data_handles[k][k]);
+
 			for (i = k+1; i<nblocks; i++)
 			{
 				if (i <= j)
@@ -141,6 +143,8 @@ void dw_cholesky(float ***matA, unsigned ld, int rank, int nodes, double *timing
 							       0);
 				}
 			}
+
+			starpu_mpi_cache_flush(MPI_COMM_WORLD, data_handles[k][j]);
 		}
 	}
 

+ 9 - 1
mpi/examples/mpi_lu/pxlu_implicit.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010, 2011, 2013  Université de Bordeaux 1
+ * Copyright (C) 2010-2011, 2013-2014  Université de Bordeaux 1
  * Copyright (C) 2010, 2012, 2013  Centre National de la Recherche Scientifique
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -133,6 +133,8 @@ double STARPU_PLU(plu_main)(unsigned _nblocks, int _rank, int _world_size)
 	{
 		create_task_11(k);
 
+		starpu_mpi_cache_flush(MPI_COMM_WORLD, STARPU_PLU(get_block_handle)(k,k));
+
 		for (i = k+1; i<nblocks; i++)
 		{
 			create_task_12(k, i);
@@ -146,6 +148,12 @@ double STARPU_PLU(plu_main)(unsigned _nblocks, int _rank, int _world_size)
 				create_task_22(k, i, j);
 			}
 		}
+
+		for (i = k+1; i<nblocks; i++)
+		{
+			starpu_mpi_cache_flush(MPI_COMM_WORLD, STARPU_PLU(get_block_handle)(k,i));
+			starpu_mpi_cache_flush(MPI_COMM_WORLD, STARPU_PLU(get_block_handle)(i,k));
+		}
 	}
 
 	starpu_task_wait_for_all();

+ 11 - 0
mpi/tests/insert_task_cache.c

@@ -91,6 +91,17 @@ void test_cache(int rank, int size, char *enabled, size_t *comm_amount)
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
 	}
 
+	for(i = 0; i < 5; i++)
+	{
+		starpu_mpi_cache_flush(MPI_COMM_WORLD, data_handles[0]);
+	}
+
+	for(i = 0; i < 5; i++)
+	{
+		ret = starpu_mpi_task_insert(MPI_COMM_WORLD, &mycodelet, STARPU_RW, data_handles[1], STARPU_R, data_handles[0], 0);
+		STARPU_CHECK_RETURN_VALUE(ret, "starpu_mpi_task_insert");
+	}
+
 	starpu_task_wait_for_all();
 
 	for(i = 0; i < 2; i++)