Skip to content
Snippets Groups Projects
  • Thomas Schwinge's avatar
    f8332e52
    Use 'GOMP_MAP_VARS_TARGET' for OpenACC compute constructs [PR90596] · f8332e52
    Thomas Schwinge authored
    Thereby considerably simplify the device plugins' 'GOMP_OFFLOAD_openacc_exec',
    'GOMP_OFFLOAD_openacc_async_exec' functions: in terms of lines of code, but in
    particular conceptually: no more device memory allocation, host to device data
    copying, device memory deallocation -- 'GOMP_MAP_VARS_TARGET' does all that for
    us.
    
    This depends on commit 2b2340e2
    "Allow libgomp 'cbuf' buffering with OpenACC 'async' for 'ephemeral' data",
    where I said that "a use will emerge later", which is this one here.
    
    	PR libgomp/90596
    	libgomp/
    	* target.c (gomp_map_vars_internal): Allow for
    	'param_kind == GOMP_MAP_VARS_OPENACC | GOMP_MAP_VARS_TARGET'.
    	* oacc-parallel.c (GOACC_parallel_keyed): Pass
    	'GOMP_MAP_VARS_TARGET' to 'goacc_map_vars'.
    	* plugin/plugin-gcn.c (alloc_by_agent, gcn_exec)
    	(GOMP_OFFLOAD_openacc_exec, GOMP_OFFLOAD_openacc_async_exec):
    	Adjust, simplify.
    	(gomp_offload_free): Remove.
    	* plugin/plugin-nvptx.c (nvptx_exec, GOMP_OFFLOAD_openacc_exec)
    	(GOMP_OFFLOAD_openacc_async_exec): Adjust, simplify.
    	(cuda_free_argmem): Remove.
    	* testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c:
    	Adjust.
    f8332e52
    History
    Use 'GOMP_MAP_VARS_TARGET' for OpenACC compute constructs [PR90596]
    Thomas Schwinge authored
    Thereby considerably simplify the device plugins' 'GOMP_OFFLOAD_openacc_exec',
    'GOMP_OFFLOAD_openacc_async_exec' functions: in terms of lines of code, but in
    particular conceptually: no more device memory allocation, host to device data
    copying, device memory deallocation -- 'GOMP_MAP_VARS_TARGET' does all that for
    us.
    
    This depends on commit 2b2340e2
    "Allow libgomp 'cbuf' buffering with OpenACC 'async' for 'ephemeral' data",
    where I said that "a use will emerge later", which is this one here.
    
    	PR libgomp/90596
    	libgomp/
    	* target.c (gomp_map_vars_internal): Allow for
    	'param_kind == GOMP_MAP_VARS_OPENACC | GOMP_MAP_VARS_TARGET'.
    	* oacc-parallel.c (GOACC_parallel_keyed): Pass
    	'GOMP_MAP_VARS_TARGET' to 'goacc_map_vars'.
    	* plugin/plugin-gcn.c (alloc_by_agent, gcn_exec)
    	(GOMP_OFFLOAD_openacc_exec, GOMP_OFFLOAD_openacc_async_exec):
    	Adjust, simplify.
    	(gomp_offload_free): Remove.
    	* plugin/plugin-nvptx.c (nvptx_exec, GOMP_OFFLOAD_openacc_exec)
    	(GOMP_OFFLOAD_openacc_async_exec): Adjust, simplify.
    	(cuda_free_argmem): Remove.
    	* testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c:
    	Adjust.