aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2017-05-17 12:07:30 +0000
committerThomas Schwinge <thomas@codesourcery.com>2017-05-17 12:07:30 +0000
commit9b55f6cffcf9251625370c78110f856d02da4380 (patch)
treed96dbd1319add25832242a9f300b4c0aea3e2c22
parent932ad7ba041480987e62d2d2086f0e10ff52eea4 (diff)
OpenACC 2.5 Profiling Interface changes for "finalize" handling
libgomp/ * libgomp.texi (OpenACC Profiling Interface): Update. * oacc-parallel.c (GOACC_parallel_keyed): Update profiling event generation. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@248150 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libgomp/ChangeLog.gomp4
-rw-r--r--libgomp/libgomp.texi4
-rw-r--r--libgomp/oacc-parallel.c9
3 files changed, 13 insertions, 4 deletions
diff --git a/libgomp/ChangeLog.gomp b/libgomp/ChangeLog.gomp
index 2ea72156a1a..996c1f9fc92 100644
--- a/libgomp/ChangeLog.gomp
+++ b/libgomp/ChangeLog.gomp
@@ -1,5 +1,9 @@
2017-05-17 Thomas Schwinge <thomas@codesourcery.com>
+ * libgomp.texi (OpenACC Profiling Interface): Update.
+ * oacc-parallel.c (GOACC_parallel_keyed): Update profiling event
+ generation.
+
* oacc-parallel.c (GOACC_enter_exit_data): Locally compute
"finalize", and remove the formal parameter. Adjust all users.
(GOACC_declare): Don't replace GOMP_MAP_FROM with
diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index 69fb3be3ac9..1dea1e237b8 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -3459,8 +3459,8 @@ offloading devices (it's not clear if they should be):
@item @code{acc_free}
@item @code{acc_copyin}, @code{acc_present_or_copyin}, @code{acc_copyin_async}
@item @code{acc_create}, @code{acc_present_or_create}, @code{acc_create_async}
-@item @code{acc_copyout}, @code{acc_copyout_async}
-@item @code{acc_delete}, @code{acc_delete_async}
+@item @code{acc_copyout}, @code{acc_copyout_async}, @code{acc_copyout_finalize}, @code{acc_copyout_finalize_async}
+@item @code{acc_delete}, @code{acc_delete_async}, @code{acc_delete_finalize}, @code{acc_delete_finalize_async}
@item @code{acc_update_device}, @code{acc_update_device_async}
@item @code{acc_update_self}, @code{acc_update_self_async}
@item @code{acc_map_data}, @code{acc_unmap_data}
diff --git a/libgomp/oacc-parallel.c b/libgomp/oacc-parallel.c
index ff6e96c1d96..622c71135ed 100644
--- a/libgomp/oacc-parallel.c
+++ b/libgomp/oacc-parallel.c
@@ -333,8 +333,10 @@ GOACC_parallel_keyed (int device, void (*fn) (void *),
async, dims, tgt);
/* If running synchronously, unmap immediately. */
+ bool copyfrom = true;
if (async < acc_async_noval)
{
+ unmap:
if (profiling_dispatch_p)
{
prof_info.event_type = acc_ev_exit_data_start;
@@ -344,7 +346,7 @@ GOACC_parallel_keyed (int device, void (*fn) (void *),
goacc_profiling_dispatch (&prof_info, &enter_exit_data_event_info,
&api_info);
}
- gomp_unmap_vars (tgt, true);
+ gomp_unmap_vars (tgt, copyfrom);
if (profiling_dispatch_p)
{
prof_info.event_type = acc_ev_exit_data_end;
@@ -369,7 +371,10 @@ GOACC_parallel_keyed (int device, void (*fn) (void *),
if (async_unmap)
tgt->device_descr->openacc.register_async_cleanup_func (tgt, async);
else
- gomp_unmap_vars (tgt, false);
+ {
+ copyfrom = false;
+ goto unmap;
+ }
}
acc_dev->openacc.async_set_async_func (acc_async_sync);