Ping.
On 2017/6/22 3:18 PM, Chung-Lin Tang wrote:
> On 2017/6/14 12:00 AM, Jakub Jelinek wrote:
>> I don't see sufficient information on what you want to change and why
>> and whether the changes are backwards compatible (say will a valid
>> OpenACC 2.0 program compiled by GCC 7 work against both libgomp from GCC 7
>> as well as one with this patch)?
>> Can you write a few paragraphs on it (doesn't have to be comments in the
>> source, mailing list is fine)?
>
> The current code doesn't handle GOMP_MAP_TO (present_or_copyin) and also the
> GOMP_MAP_PSET/MAP_POINTER handling wasn't entirely correct. This patch fixes
> them.
>
> In the new attached patch, I added a fix a memory management fix that was
> forgotten earlier. The collective patch was originally by Cesar, from here:
> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01367.html
> (in that post, his main emphasis was the memory management fix)
>
>>> + case GOMP_MAP_ALLOC:
>>> + acc_present_or_create (hostaddrs[i], sizes[i]);
>>> break;
>>> case GOMP_MAP_FORCE_ALLOC:
>>> acc_create (hostaddrs[i], sizes[i]);
>>> break;
>>> - case GOMP_MAP_FORCE_PRESENT:
>>> + case GOMP_MAP_TO:
>>> acc_present_or_copyin (hostaddrs[i], sizes[i]);
>>> break;
>>> case GOMP_MAP_FORCE_TO:
>>> - acc_present_or_copyin (hostaddrs[i], sizes[i]);
>>> + acc_copyin (hostaddrs[i], sizes[i]);
>>> break;
>>
>> E.g. in this hunk you remove GOMP_MAP_POINTER and GOMP_MAP_FORCE_PRESENT
>> handling and significantly change GOMP_MAP_FORCE_TO. The first two will
>> now gomp_fatal, right? Can it ever appear in GOACC_enter_exit_data
>> calls?
>
> GOMP_MAP_FORCE_PRESENT does not appear in enter/exit data directives, while
> GOMP_MAP_POINTER is handled in find_pointer().
>
> Thanks,
> Chung-Lin
>
> 2017-06-22 Cesar Philippidis <ce...@codesourcery.com>
> Thomas Schwinge <tho...@codesourcery.com>
> Chung-Lin Tang <clt...@codesourcery.com>
>
> libgomp/
> * oacc-mem.c (gomp_acc_remove_pointer): Fix a memory leak preventing
> target_mem_desc.to_free from being deallocated with acc exit data.
> * oacc-parallel.c (find_pset): Adjust and rename from...
> (find_pointer): ...this function.
> (GOACC_enter_exit_data): Handle GOMP_MAP_TO and GOMP_MAP_ALLOC,
> adjust find_pointer calls into find_pset, adjust pointer map handling,
> add acc_is_present guards to calls to gomp_acc_insert_pointer and
> gomp_acc_remove_pointer.
>
> * testsuite/libgomp.oacc-c-c++-common/data-2.c: Update test.
> * testsuite/libgomp.oacc-c-c++-common/enter-data.c: New test.
> * testsuite/libgomp.oacc-fortran/data-2.f90: Update test.
>
>