Sfoglia il codice sorgente

inline datastats guards

Samuel Thibault 9 anni fa
parent
commit
c8ecf346de
2 ha cambiato i file con 38 aggiunte e 28 eliminazioni
  1. 6 23
      src/datawizard/datastats.c
  2. 32 5
      src/datawizard/datastats.h

+ 6 - 23
src/datawizard/datastats.c

@@ -20,36 +20,25 @@
 #include <datawizard/coherency.h>
 #include <common/config.h>
 
-static int _enable_stats = 0;
+int _starpu_enable_stats = 0;
 
 void _starpu_datastats_init()
 {
-	_enable_stats = !!starpu_getenv("STARPU_ENABLE_STATS");
-}
-
-static inline int starpu_enable_stats(void)
-{
-	return _enable_stats;
+	_starpu_enable_stats = !!starpu_getenv("STARPU_ENABLE_STATS");
 }
 
 /* measure the cache hit ratio for each node */
 static unsigned hit_cnt[STARPU_MAXNODES];
 static unsigned miss_cnt[STARPU_MAXNODES];
 
-void _starpu_msi_cache_hit(unsigned node STARPU_ATTRIBUTE_UNUSED)
+void __starpu_msi_cache_hit(unsigned node)
 {
-	if (!starpu_enable_stats())
-		return;
-
 	STARPU_HG_DISABLE_CHECKING(hit_cnt[node]);
 	hit_cnt[node]++;
 }
 
-void _starpu_msi_cache_miss(unsigned node STARPU_ATTRIBUTE_UNUSED)
+void __starpu_msi_cache_miss(unsigned node)
 {
-	if (!starpu_enable_stats())
-		return;
-
 	STARPU_HG_DISABLE_CHECKING(miss_cnt[node]);
 	miss_cnt[node]++;
 }
@@ -90,20 +79,14 @@ void _starpu_display_msi_stats(void)
 static unsigned alloc_cnt[STARPU_MAXNODES];
 static unsigned alloc_cache_hit_cnt[STARPU_MAXNODES];
 
-void _starpu_allocation_cache_hit(unsigned node STARPU_ATTRIBUTE_UNUSED)
+void __starpu_allocation_cache_hit(unsigned node)
 {
-	if (!starpu_enable_stats())
-		return;
-
 	STARPU_HG_DISABLE_CHECKING(alloc_cache_hit_cnt[node]);
 	alloc_cache_hit_cnt[node]++;
 }
 
-void _starpu_data_allocation_inc_stats(unsigned node STARPU_ATTRIBUTE_UNUSED)
+void __starpu_data_allocation_inc_stats(unsigned node)
 {
-	if (!starpu_enable_stats())
-		return;
-
 	STARPU_HG_DISABLE_CHECKING(alloc_cnt[node]);
 	alloc_cnt[node]++;
 }

+ 32 - 5
src/datawizard/datastats.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009, 2010  Université de Bordeaux
+ * Copyright (C) 2009, 2010, 2016  Université de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2015  CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -23,15 +23,42 @@
 #include <stdint.h>
 #include <stdlib.h>
 
+extern int _starpu_enable_stats;
+
 void _starpu_datastats_init();
 
-void _starpu_msi_cache_hit(unsigned node);
-void _starpu_msi_cache_miss(unsigned node);
+static inline int starpu_enable_stats(void)
+{
+	return _starpu_enable_stats;
+}
+
+void __starpu_msi_cache_hit(unsigned node);
+void __starpu_msi_cache_miss(unsigned node);
+
+#define _starpu_msi_cache_hit(node) do { \
+	if (starpu_enable_stats()) \
+		__starpu_msi_cache_hit(node); \
+} while (0)
+
+#define _starpu_msi_cache_miss(node) do { \
+	if (starpu_enable_stats()) \
+		__starpu_msi_cache_miss(node); \
+} while (0)
 
 void _starpu_display_msi_stats(void);
 
-void _starpu_allocation_cache_hit(unsigned node STARPU_ATTRIBUTE_UNUSED);
-void _starpu_data_allocation_inc_stats(unsigned node STARPU_ATTRIBUTE_UNUSED);
+void __starpu_allocation_cache_hit(unsigned node STARPU_ATTRIBUTE_UNUSED);
+void __starpu_data_allocation_inc_stats(unsigned node STARPU_ATTRIBUTE_UNUSED);
+
+#define _starpu_allocation_cache_hit(node) do { \
+	if (starpu_enable_stats()) \
+		__starpu_allocation_cache_hit(node); \
+} while (0)
+
+#define _starpu_data_allocation_inc_stats(node) do { \
+	if (starpu_enable_stats()) \
+		__starpu_data_allocation_inc_stats(node); \
+} while (0)
 
 void _starpu_display_alloc_cache_stats(void);