public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/omp/gcc-11] Revert "OpenACC reference count consistency checking"
@ 2021-05-13 16:16 Kwok Yeung
  0 siblings, 0 replies; only message in thread
From: Kwok Yeung @ 2021-05-13 16:16 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:7ca199439533e42cf4fb0d183dc0cef44b8da919

commit 7ca199439533e42cf4fb0d183dc0cef44b8da919
Author: Julian Brown <julian@codesourcery.com>
Date:   Fri Jul 31 08:22:00 2020 -0700

    Revert "OpenACC reference count consistency checking"
    
    This reverts commit 56ebcdff802678b11deb1a9c3f6d20d33498e944.

Diff:
---
 libgomp/libgomp.h       |  18 -----
 libgomp/oacc-parallel.c |  33 ---------
 libgomp/target.c        | 182 ------------------------------------------------
 3 files changed, 233 deletions(-)

diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h
index d22210b4cbd..6f2e0f13416 100644
--- a/libgomp/libgomp.h
+++ b/libgomp/libgomp.h
@@ -988,17 +988,9 @@ struct target_var_desc {
   uintptr_t length;
 };
 
-/* Uncomment to enable reference-count consistency checking (for development
-   use only).  */
-//#define RC_CHECKING 1
-
 struct target_mem_desc {
   /* Reference count.  */
   uintptr_t refcount;
-#ifdef RC_CHECKING
-  uintptr_t refcount_chk;
-  bool mark;
-#endif
   /* All the splay nodes allocated together.  */
   splay_tree_node array;
   /* Start of the target region.  */
@@ -1054,10 +1046,6 @@ struct splay_tree_key_s {
   uintptr_t refcount;
   /* Dynamic reference count.  */
   uintptr_t dynamic_refcount;
-#ifdef RC_CHECKING
-  /* The recalculated reference count, for verification.  */
-  uintptr_t refcount_chk;
-#endif
   struct splay_tree_aux *aux;
 };
 
@@ -1211,12 +1199,6 @@ extern void gomp_detach_pointer (struct gomp_device_descr *,
 				 struct goacc_asyncqueue *, splay_tree_key,
 				 uintptr_t, bool, struct gomp_coalesce_buf *);
 
-#ifdef RC_CHECKING
-extern void dump_tgt (const char *, struct target_mem_desc *);
-extern void gomp_rc_check (struct gomp_device_descr *,
-			   struct target_mem_desc *);
-#endif
-
 extern struct target_mem_desc *gomp_map_vars (struct gomp_device_descr *,
 					      size_t, void **, void **,
 					      size_t *, void *, bool,
diff --git a/libgomp/oacc-parallel.c b/libgomp/oacc-parallel.c
index 9ac9a81469c..56aee1874fe 100644
--- a/libgomp/oacc-parallel.c
+++ b/libgomp/oacc-parallel.c
@@ -545,15 +545,6 @@ GOACC_parallel_keyed (int flags_m, void (*fn) (void *),
 			       nca_info);
   free (nca_info);
 
-#ifdef RC_CHECKING
-  gomp_mutex_lock (&acc_dev->lock);
-  assert (tgt);
-  dump_tgt (__FUNCTION__, tgt);
-  tgt->prev = thr->mapped_data;
-  gomp_rc_check (acc_dev, tgt);
-  gomp_mutex_unlock (&acc_dev->lock);
-#endif
-
   if (profiling_p)
     {
       prof_info.event_type = acc_ev_enter_data_end;
@@ -630,12 +621,6 @@ GOACC_parallel_keyed (int flags_m, void (*fn) (void *),
       thr->prof_info = NULL;
       thr->api_info = NULL;
     }
-
-#ifdef RC_CHECKING
-  gomp_mutex_lock (&acc_dev->lock);
-  gomp_rc_check (acc_dev, thr->mapped_data);
-  gomp_mutex_unlock (&acc_dev->lock);
-#endif
 }
 
 /* Legacy entry point (GCC 5).  Only provide host fallback execution.  */
@@ -751,12 +736,6 @@ GOACC_data_start (int flags_m, size_t mapnum,
       tgt->prev = thr->mapped_data;
       thr->mapped_data = tgt;
 
-#ifdef RC_CHECKING
-      gomp_mutex_lock (&acc_dev->lock);
-      gomp_rc_check (acc_dev, thr->mapped_data);
-      gomp_mutex_unlock (&acc_dev->lock);
-#endif
-
       goto out_prof;
     }
 
@@ -851,12 +830,6 @@ GOACC_data_end (void)
   gomp_unmap_vars (tgt, true);
   gomp_debug (0, "  %s: mappings restored\n", __FUNCTION__);
 
-#ifdef RC_CHECKING
-  gomp_mutex_lock (&thr->dev->lock);
-  gomp_rc_check (thr->dev, thr->mapped_data);
-  gomp_mutex_unlock (&thr->dev->lock);
-#endif
-
   if (profiling_p)
     {
       prof_info.event_type = acc_ev_exit_data_end;
@@ -1036,12 +1009,6 @@ GOACC_update (int flags_m, size_t mapnum,
       thr->prof_info = NULL;
       thr->api_info = NULL;
     }
-
-#ifdef RC_CHECKING
-  gomp_mutex_lock (&acc_dev->lock);
-  gomp_rc_check (acc_dev, thr->mapped_data);
-  gomp_mutex_unlock (&acc_dev->lock);
-#endif
 }
 
 
diff --git a/libgomp/target.c b/libgomp/target.c
index 851609586bd..b4db0c2b453 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -38,9 +38,6 @@
 #include <string.h>
 #include <assert.h>
 #include <errno.h>
-#ifdef RC_CHECKING
-#include <stdio.h>
-#endif
 
 #ifdef PLUGIN_SUPPORT
 #include <dlfcn.h>
@@ -368,185 +365,6 @@ gomp_free_device_memory (struct gomp_device_descr *devicep, void *devptr)
     }
 }
 
-#ifdef RC_CHECKING
-void
-dump_tgt (const char *where, struct target_mem_desc *tgt)
-{
-  if (!getenv ("GOMP_DEBUG_TGT"))
-    return;
-
-  fprintf (stderr, "%s: %s: tgt=%p\n", __FUNCTION__, where, (void*) tgt);
-  fprintf (stderr, "refcount=%d\n", (int) tgt->refcount);
-  fprintf (stderr, "tgt_start=%p\n", (void*) tgt->tgt_start);
-  fprintf (stderr, "tgt_end=%p\n", (void*) tgt->tgt_end);
-  fprintf (stderr, "to_free=%p\n", tgt->to_free);
-  fprintf (stderr, "list_count=%d\n", (int) tgt->list_count);
-  for (int i = 0; i < tgt->list_count; i++)
-    {
-      fprintf (stderr, "list item %d:\n", i);
-      fprintf (stderr, "  key: %p\n", (void*) tgt->list[i].key);
-      if (tgt->list[i].key)
-	{
-	  fprintf (stderr, "  key.host_start=%p\n",
-		   (void*) tgt->list[i].key->host_start);
-	  fprintf (stderr, "  key.host_end=%p\n",
-		   (void*) tgt->list[i].key->host_end);
-	  fprintf (stderr, "  key.tgt=%p\n", (void*) tgt->list[i].key->tgt);
-	  fprintf (stderr, "  key.offset=%d\n",
-		   (int) tgt->list[i].key->tgt_offset);
-	  fprintf (stderr, "  key.refcount=%d\n",
-		   (int) tgt->list[i].key->refcount);
-	  if (tgt->list[i].key->refcount == REFCOUNT_LINK)
-	    fprintf (stderr, "  key.aux.link_key=%p\n",
-		     (void*) tgt->list[i].key->aux->link_key);
-	  else
-	    {
-	      fprintf (stderr, "  key.virtual_refcount=%d\n",
-		       (int) tgt->list[i].key->virtual_refcount);
-	      fprintf (stderr, "  key.aux.attach_count=%p\n",
-		       (void*) tgt->list[i].key->aux->attach_count);
-	    }
-	}
-    }
-  fprintf (stderr, "\n");
-}
-
-static void
-rc_check_clear (splay_tree_node node)
-{
-  splay_tree_key k = &node->key;
-
-  k->refcount_chk = 0;
-  k->tgt->refcount_chk = 0;
-  k->tgt->mark = false;
-
-  if (node->left)
-    rc_check_clear (node->left);
-  if (node->right)
-    rc_check_clear (node->right);
-}
-
-static void
-rc_check_count (splay_tree_node node)
-{
-  splay_tree_key k = &node->key;
-  struct target_mem_desc *t;
-
-  /* Add virtual reference counts ("acc enter data", etc.) for this key.  */
-  k->refcount_chk += k->virtual_refcount;
-
-  t = k->tgt;
-  t->refcount_chk++;
-
-  if (!t->mark)
-    {
-      for (int i = 0; i < t->list_count; i++)
-	if (t->list[i].key)
-	  t->list[i].key->refcount_chk++;
-
-      t->mark = true;
-    }
-
-  if (node->left)
-    rc_check_count (node->left);
-  if (node->right)
-    rc_check_count (node->right);
-}
-
-static bool
-rc_check_verify (splay_tree_node node, bool noisy, bool errors)
-{
-  splay_tree_key k = &node->key;
-  struct target_mem_desc *t;
-
-  if (k->refcount != REFCOUNT_INFINITY)
-    {
-      if (noisy)
-	fprintf (stderr, "key %p (%p..+%d): rc=%d/%d, virt_rc=%d\n", k,
-		 (void *) k->host_start, (int) (k->host_end - k->host_start),
-		 (int) k->refcount, (int) k->refcount_chk,
-		 (int) k->virtual_refcount);
-
-      if (k->refcount != k->refcount_chk)
-	{
-	  if (noisy)
-	    fprintf (stderr, "  -- key refcount mismatch!\n");
-	  errors = true;
-	}
-
-      t = k->tgt;
-
-      if (noisy)
-	fprintf (stderr, "tgt %p: rc=%d/%d\n", t, (int) t->refcount,
-		 (int) t->refcount_chk);
-
-      if (t->refcount != t->refcount_chk)
-	{
-	  if (noisy)
-	    fprintf (stderr,
-		     "  -- target memory descriptor refcount mismatch!\n");
-	  errors = true;
-	}
-    }
-
-  if (node->left)
-    errors |= rc_check_verify (node->left, noisy, errors);
-  if (node->right)
-    errors |= rc_check_verify (node->right, noisy, errors);
-
-  return errors;
-}
-
-/* Call with device locked.  */
-
-attribute_hidden void
-gomp_rc_check (struct gomp_device_descr *devicep, struct target_mem_desc *tgt)
-{
-  splay_tree sp = &devicep->mem_map;
-
-  bool noisy = getenv ("GOMP_DEBUG_TGT") != 0;
-
-  if (noisy)
-    fprintf (stderr, "\n*** GOMP_RC_CHECK ***\n\n");
-
-  if (sp->root)
-    {
-      rc_check_clear (sp->root);
-
-      for (struct target_mem_desc *t = tgt; t; t = t->prev)
-	{
-	  t->refcount_chk = 0;
-	  t->mark = false;
-	}
-
-      /* Add references for interconnected splay-tree keys.  */
-      rc_check_count (sp->root);
-
-      /* Add references for the tgt for a currently-executing kernel and/or
-	 any enclosing data directives.  */
-      for (struct target_mem_desc *t = tgt; t; t = t->prev)
-	{
-	  t->refcount_chk++;
-
-	  if (!t->mark)
-	    {
-	      for (int i = 0; i < t->list_count; i++)
-		if (t->list[i].key)
-		  t->list[i].key->refcount_chk++;
-
-	      t->mark = true;
-	    }
-	}
-
-      if (rc_check_verify (sp->root, noisy, false))
-	{
-	  gomp_mutex_unlock (&devicep->lock);
-	  gomp_fatal ("refcount checking failure");
-	}
-    }
-}
-#endif
-
 /* Handle the case where gomp_map_lookup, splay_tree_lookup or
    gomp_map_0len_lookup found oldn for newn.
    Helper function of gomp_map_vars.  */


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-05-13 16:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-13 16:16 [gcc/devel/omp/gcc-11] Revert "OpenACC reference count consistency checking" Kwok Yeung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).