From b972d492ab4d72e2b08b94586865103fcf3ced38 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Wed, 13 Sep 2023 13:34:24 +0200 Subject: [PATCH] Changed option name to assume_deviceptr --- cmake/loki_transform.cmake | 6 +++--- scripts/loki_transform.py | 6 +++--- transformations/transformations/data_offload.py | 14 ++++++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cmake/loki_transform.cmake b/cmake/loki_transform.cmake index acabaf4e0..005c2ba0b 100644 --- a/cmake/loki_transform.cmake +++ b/cmake/loki_transform.cmake @@ -199,7 +199,7 @@ endmacro() function( loki_transform_convert ) - set( options CPP DATA_OFFLOAD REMOVE_OPENMP DEVICEPTR GLOBAL_VAR_OFFLOAD TRIM_VECTOR_SECTIONS REMOVE_DERIVED_ARGS ) + set( options CPP DATA_OFFLOAD REMOVE_OPENMP ASSUME_DEVICEPTR GLOBAL_VAR_OFFLOAD TRIM_VECTOR_SECTIONS REMOVE_DERIVED_ARGS ) set( oneValueArgs MODE DIRECTIVE FRONTEND CONFIG PATH OUTPATH ) set( multiValueArgs OUTPUT DEPENDS INCLUDES INCLUDE HEADERS HEADER DEFINITIONS DEFINE OMNI_INCLUDE XMOD ) @@ -236,8 +236,8 @@ function( loki_transform_convert ) list( APPEND _ARGS --remove-openmp ) endif() - if( ${_PAR_DEVICEPTR} ) - list( APPEND _ARGS --deviceptr ) + if( ${_PAR_ASSUME_DEVICEPTR} ) + list( APPEND _ARGS --assume_deviceptr ) endif() if( ${_PAR_GLOBAL_VAR_OFFLOAD} ) diff --git a/scripts/loki_transform.py b/scripts/loki_transform.py index 053c3bb8c..0f9ca455f 100644 --- a/scripts/loki_transform.py +++ b/scripts/loki_transform.py @@ -92,7 +92,7 @@ def cli(debug): help='Run transformation to insert custom data offload regions.') @click.option('--remove-openmp', is_flag=True, default=False, help='Removes existing OpenMP pragmas in "!$loki data" regions.') -@click.option('--deviceptr', is_flag=True, default=False, +@click.option('--assume_deviceptr', is_flag=True, default=False, help='Mark the relevant arguments as true device-pointers in "!$loki data" regions.') @click.option('--frontend', default='fp', type=click.Choice(['fp', 'ofp', 'omni']), help='Frontend parser to use (default FP)') @@ -104,7 +104,7 @@ def cli(debug): help="Remove derived-type arguments and replace with canonical arguments") def convert( mode, config, build, source, header, cpp, directive, include, define, omni_include, xmod, - data_offload, remove_openmp, deviceptr, frontend, trim_vector_sections, + data_offload, remove_openmp, assume_deviceptr, frontend, trim_vector_sections, global_var_offload, remove_derived_args ): """ @@ -167,7 +167,7 @@ def convert( # Insert data offload regions for GPUs and remove OpenMP threading directives use_claw_offload = True if data_offload: - offload_transform = DataOffloadTransformation(remove_openmp=remove_openmp, deviceptr=deviceptr) + offload_transform = DataOffloadTransformation(remove_openmp=remove_openmp, assume_deviceptr=assume_deviceptr) scheduler.process(transformation=offload_transform) use_claw_offload = not offload_transform.has_data_regions diff --git a/transformations/transformations/data_offload.py b/transformations/transformations/data_offload.py index 643e71ede..15de3b493 100644 --- a/transformations/transformations/data_offload.py +++ b/transformations/transformations/data_offload.py @@ -27,9 +27,9 @@ class DataOffloadTransformation(Transformation): ---------- remove_openmp : bool Remove any existing OpenMP pragmas inside the marked region. - deviceptr : bool + assume_deviceptr : bool Mark all offloaded arrays as true device-pointers if data offload - is being managed outside of structured Openacc data regions. + is being managed outside of structured OpenACC data regions. """ def __init__(self, **kwargs): @@ -139,10 +139,12 @@ def insert_data_offload_pragmas(self, routine, targets): # Now geenerate the pre- and post pragmas (OpenACC) if self.deviceptr: - deviceptr = '' - if inargs+outargs+inoutargs: - deviceptr = f'deviceptr({", ".join(inargs+outargs+inoutargs)})' - pragma = Pragma(keyword='acc', content=f'data {deviceptr}') + offload_args = inargs + outargs + inoutargs + if offload_args: + deviceptr = f' deviceptr({", ".join(offload_args)})' + else: + deviceptr = '' + pragma = Pragma(keyword='acc', content=f'data{deviceptr}') else: copyin = f'copyin({", ".join(inargs)})' if inargs else '' copy = f'copy({", ".join(inoutargs)})' if inoutargs else ''