Ping x3

On 2016/4/16 3:40 PM, Chung-Lin Tang wrote:
> Ping.
> 
> On 2016/4/8 07:02 PM, Chung-Lin Tang wrote:
>> Ping.
>>
>> On 2016/3/29 5:48 PM, Chung-Lin Tang wrote:
>>> I've updated this patch for trunk (as attached), and re-tested without
>>> regressions. This patch is still a fix for 
>>> libgomp.oacc-c-c++-common/asyncwait-1.c,
>>> which FAILs right now.
>>>
>>> ChangeLog is still as before. Is this okay for trunk?
>>>
>>> Thanks,
>>> Chung-Lin
>>>
>>> On 2015/12/22 4:58 PM, Chung-Lin Tang wrote:
>>>> Ping.
>>>>
>>>> On 2015/11/24 6:27 PM, Chung-Lin Tang wrote:
>>>>> Hi, this patch reworks some of the way that asynchronous copyouts are
>>>>> implemented for OpenACC in libgomp.
>>>>>
>>>>> Before this patch, we had a somewhat confusing way of implementing this
>>>>> by having two refcounts for each mapping: refcount and async_refcount,
>>>>> which I never got working again after the last wave of async regressions
>>>>> showed up.
>>>>>
>>>>> So this patch implements what I believe to be a simplification: 
>>>>> async_refcount
>>>>> is removed, and instead of trying to queue the async copyouts during 
>>>>> unmapping
>>>>> we actually do that during the plugin event handling. This requires a 
>>>>> addition
>>>>> of the async stream integer as an argument to the register_async_cleanup
>>>>> plugin hook, but overall I think this should be more elegant than before.
>>>>>
>>>>> This patch fixes the libgomp.oacc-c-c++-common/asyncwait-1.c regression.
>>>>> It also fixed data-[23].c regressions before, but some other recent 
>>>>> check-in
>>>>> happened to already fixed those.
>>>>>
>>>>> Tested without regressions, is this okay for trunk?
>>>>>
>>>>> Thanks,
>>>>> Chung-Lin
>>>>>
>>>>> 2015-11-24  Chung-Lin Tang  <clt...@codesourcery.com>
>>>>>
>>>>>         * oacc-plugin.h (GOMP_PLUGIN_async_unmap_vars): Add int parameter.
>>>>>         * oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Add 'int async'
>>>>>         parameter, use to set async stream around call to gomp_unmap_vars,
>>>>>         call gomp_unmap_vars() with 'do_copyfrom' set to true.
>>>>>         * plugin/plugin-nvptx.c (struct ptx_event): Add 'int val' field.
>>>>>         (event_gc): Adjust event handling loop, collect 
>>>>> PTX_EVT_ASYNC_CLEANUP
>>>>>         events and call GOMP_PLUGIN_async_unmap_vars() for each of them.
>>>>>         (event_add): Add int parameter, initialize 'val' field when
>>>>>         adding new ptx_event struct.
>>>>>         (nvptx_evec): Adjust event_add() call arguments.
>>>>>         (nvptx_host2dev): Likewise.
>>>>>         (nvptx_dev2host): Likewise.
>>>>>         (nvptx_wait_async): Likewise.
>>>>>         (nvptx_wait_all_async): Likewise.
>>>>>         (GOMP_OFFLOAD_openacc_register_async_cleanup): Add async 
>>>>> parameter,
>>>>>         pass to event_add() call.
>>>>>         * oacc-host.c (host_openacc_register_async_cleanup): Add 'int 
>>>>> async'
>>>>>         parameter.
>>>>>         * oacc-mem.c (gomp_acc_remove_pointer): Adjust async case to
>>>>>         call openacc.register_async_cleanup_func() hook.
>>>>>         * oacc-parallel.c (GOACC_parallel_keyed): Likewise.
>>>>>         * target.c (gomp_copy_from_async): Delete function.
>>>>>         (gomp_map_vars): Remove async_refcount.
>>>>>         (gomp_unmap_vars): Likewise.
>>>>>         (gomp_load_image_to_device): Likewise.
>>>>>         (omp_target_associate_ptr): Likewise.
>>>>>         * libgomp.h (struct splay_tree_key_s): Remove async_refcount.
>>>>>         (acc_dispatch_t.register_async_cleanup_func): Add int parameter.
>>>>>         (gomp_copy_from_async): Remove.
>>>>>
>>>>
>>>
>>
> 

Reply via email to