瀏覽代碼

mpi/src: simplify cache API

Nathalie Furmento 10 年之前
父節點
當前提交
a564ec02da

+ 6 - 6
mpi/src/starpu_mpi_cache.c

@@ -96,7 +96,7 @@ void _starpu_mpi_cache_empty_tables(int world_size)
 		HASH_ITER(hh, _cache_received_data[i], entry, tmp)
 		{
 			HASH_DEL(_cache_received_data[i], entry);
-			_starpu_mpi_cache_stats_dec(-1, i, entry->data);
+			_starpu_mpi_cache_stats_dec(i, entry->data);
 			free(entry);
 		}
 		STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_received_mutex[i]);
@@ -145,7 +145,7 @@ void _starpu_mpi_cache_sent_data_clear(MPI_Comm comm, starpu_data_handle_t data)
 	}
 }
 
-void _starpu_mpi_cache_received_data_clear(starpu_data_handle_t data, int me)
+void _starpu_mpi_cache_received_data_clear(starpu_data_handle_t data)
 {
 	int mpi_rank = starpu_data_get_rank(data);
 	struct _starpu_data_entry *already_received;
@@ -159,7 +159,7 @@ void _starpu_mpi_cache_received_data_clear(starpu_data_handle_t data, int me)
 #endif
 		_STARPU_MPI_DEBUG(2, "Clearing receive cache for data %p\n", data);
 		HASH_DEL(_cache_received_data[mpi_rank], already_received);
-		_starpu_mpi_cache_stats_dec(me, mpi_rank, data);
+		_starpu_mpi_cache_stats_dec(mpi_rank, data);
 		free(already_received);
 		starpu_data_invalidate_submit(data);
 	}
@@ -198,7 +198,7 @@ void starpu_mpi_cache_flush_all_data(MPI_Comm comm)
 			if (mpi_rank != my_rank && mpi_rank != -1)
 				starpu_data_invalidate_submit(entry->data);
 			HASH_DEL(_cache_received_data[i], entry);
-			_starpu_mpi_cache_stats_dec(my_rank, i, entry->data);
+			_starpu_mpi_cache_stats_dec(i, entry->data);
 			free(entry);
 		}
 		STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_received_mutex[i]);
@@ -235,7 +235,7 @@ void starpu_mpi_cache_flush(MPI_Comm comm, starpu_data_handle_t data_handle)
 		{
 			_STARPU_MPI_DEBUG(2, "Clearing send cache for data %p\n", data_handle);
 			HASH_DEL(_cache_received_data[i], avail);
-			_starpu_mpi_cache_stats_dec(my_rank, i, data_handle);
+			_starpu_mpi_cache_stats_dec(i, data_handle);
 			free(avail);
 		}
 		STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_received_mutex[i]);
@@ -258,7 +258,7 @@ void *_starpu_mpi_cache_received_data_set(int src, starpu_data_handle_t data, in
 		struct _starpu_data_entry *entry = (struct _starpu_data_entry *)malloc(sizeof(*entry));
 		entry->data = data;
 		HASH_ADD_PTR(_cache_received_data[mpi_rank], data, entry);
-		_starpu_mpi_cache_stats_inc(src, mpi_rank, data);
+		_starpu_mpi_cache_stats_inc(mpi_rank, data);
 	}
 	else
 	{

+ 1 - 1
mpi/src/starpu_mpi_cache.h

@@ -35,7 +35,7 @@ void _starpu_mpi_cache_init(MPI_Comm comm);
  * If the data is NOT available in the cache, add it to the cache and return NULL
  */
 void *_starpu_mpi_cache_received_data_set(int src, starpu_data_handle_t data, int mpi_rank);
-void _starpu_mpi_cache_received_data_clear(starpu_data_handle_t data, int me);
+void _starpu_mpi_cache_received_data_clear(starpu_data_handle_t data);
 
 /*
  * If the data is already available in the cache, return a pointer to the data

+ 4 - 5
mpi/src/starpu_mpi_cache_stats.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2014  Centre National de la Recherche Scientifique
+ * Copyright (C) 2014, 2015  Centre National de la Recherche Scientifique
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -31,7 +31,6 @@ void _starpu_mpi_cache_stats_init(MPI_Comm comm)
 	{
 		stats_enabled = 0;
 	}
-
 	if (stats_enabled == 0) return;
 
 	if (!getenv("STARPU_SILENT")) fprintf(stderr,"Warning: StarPU is executed with STARPU_MPI_CACHE_STATS=1, which slows down a bit\n");
@@ -48,7 +47,7 @@ void _starpu_mpi_cache_stats_free()
 	free(comm_cache_amount);
 }
 
-void _starpu_mpi_cache_stats_update(int src, unsigned dst, starpu_data_handle_t data_handle, int count)
+void _starpu_mpi_cache_stats_update(unsigned dst, starpu_data_handle_t data_handle, int count)
 {
 	size_t size;
 
@@ -58,11 +57,11 @@ void _starpu_mpi_cache_stats_update(int src, unsigned dst, starpu_data_handle_t
 
 	if (count == 1)
 	{
-		fprintf(stderr, "[starpu_mpi_cache_stats][%d] adding %ld to %d\n", src, (long)size, dst);
+		_STARPU_MPI_MSG("[communication cache] + %10ld to   %d\n", (long)size, dst);
 	}
 	else // count == -1
 	{
-		fprintf(stderr, "[starpu_mpi_cache_stats][%d] removing %ld from %d\n", src, (long)size, dst);
+		_STARPU_MPI_MSG("[communication cache] - %10ld from %d\n", (long)size, dst);
 	}
 
 	comm_cache_amount[dst] += count * size;

+ 4 - 4
mpi/src/starpu_mpi_cache_stats.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2014  Centre National de la Recherche Scientifique
+ * Copyright (C) 2014, 2015  Centre National de la Recherche Scientifique
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -28,10 +28,10 @@ extern "C" {
 void _starpu_mpi_cache_stats_init(MPI_Comm comm);
 void _starpu_mpi_cache_stats_free();
 
-void _starpu_mpi_cache_stats_update(int src, unsigned dst, starpu_data_handle_t data_handle, int count);
+void _starpu_mpi_cache_stats_update(unsigned dst, starpu_data_handle_t data_handle, int count);
 
-#define _starpu_mpi_cache_stats_inc(src, dst, data_handle) _starpu_mpi_cache_stats_update(src, dst, data_handle, +1)
-#define _starpu_mpi_cache_stats_dec(src, dst, data_handle) _starpu_mpi_cache_stats_update(src, dst, data_handle, -1)
+#define _starpu_mpi_cache_stats_inc(dst, data_handle) _starpu_mpi_cache_stats_update(dst, data_handle, +1)
+#define _starpu_mpi_cache_stats_dec(dst, data_handle) _starpu_mpi_cache_stats_update(dst, data_handle, -1)
 
 #ifdef __cplusplus
 }

+ 1 - 1
mpi/src/starpu_mpi_task_insert.c

@@ -184,7 +184,7 @@ void _starpu_mpi_clear_data_after_execution(starpu_data_handle_t data, enum star
 			}
 			else
 			{
-				_starpu_mpi_cache_received_data_clear(data, me);
+				_starpu_mpi_cache_received_data_clear(data);
 			}
 		}
 	}