-
- Downloads
OpenACC 2.7: Adjust acc_map_data/acc_unmap_data interaction with reference counters
This patch adjusts the implementation of acc_map_data/acc_unmap_data API library routines to more fit the description in the OpenACC 2.7 specification. Instead of using REFCOUNT_INFINITY, we now define a REFCOUNT_ACC_MAP_DATA special value to mark acc_map_data-created mappings. Adjustment around mapping related code to respect OpenACC semantics are also added. libgomp/ChangeLog: * libgomp.h (REFCOUNT_ACC_MAP_DATA): Define as (REFCOUNT_SPECIAL | 2). * oacc-mem.c (acc_map_data): Adjust to use REFCOUNT_ACC_MAP_DATA, initialize dynamic_refcount as 1. (acc_unmap_data): Adjust to use REFCOUNT_ACC_MAP_DATA, (goacc_map_var_existing): Add REFCOUNT_ACC_MAP_DATA case. (goacc_exit_datum_1): Add REFCOUNT_ACC_MAP_DATA case, respect REFCOUNT_ACC_MAP_DATA when decrementing/finalizing. Force lowest dynamic_refcount to be 1 for REFCOUNT_ACC_MAP_DATA. (goacc_enter_data_internal): Add REFCOUNT_ACC_MAP_DATA case. * target.c (gomp_increment_refcount): Return early for REFCOUNT_ACC_MAP_DATA case. (gomp_decrement_refcount): Likewise. * testsuite/libgomp.oacc-c-c++-common/lib-96.c: New testcase. * testsuite/libgomp.oacc-c-c++-common/unmap-infinity-1.c: Adjust testcase error output scan test.
Showing
- libgomp/libgomp.h 2 additions, 0 deletionslibgomp/libgomp.h
- libgomp/oacc-mem.c 32 additions, 17 deletionslibgomp/oacc-mem.c
- libgomp/target.c 6 additions, 2 deletionslibgomp/target.c
- libgomp/testsuite/libgomp.oacc-c-c++-common/lib-96.c 36 additions, 0 deletionslibgomp/testsuite/libgomp.oacc-c-c++-common/lib-96.c
- libgomp/testsuite/libgomp.oacc-c-c++-common/unmap-infinity-1.c 1 addition, 1 deletion...mp/testsuite/libgomp.oacc-c-c++-common/unmap-infinity-1.c
Loading
Please register or sign in to comment