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).