Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2091: renaming and moving DynKern to LFRicKern #2100

Merged
merged 68 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
e62aa0a
#2091: renaming DynKern to LFRicKern in most files
mo-lottieturner Apr 5, 2023
47f541b
#2091: and the rest of the occurrences of DynKern
mo-lottieturner Apr 5, 2023
5d97779
#2091: reverting an unintentional DynKernMetadata -> LFRicKernMetadat…
mo-lottieturner Apr 5, 2023
e86c3b3
#2091: missed some dynkern instances
mo-lottieturner Apr 5, 2023
c9c0ff3
#2091: missed some dynkern_op
mo-lottieturner Apr 5, 2023
0446ec3
#2091: moving LFRicKern out of dynamo0p3
mo-lottieturner Apr 6, 2023
7162522
#2091: changing some import locations
mo-lottieturner Apr 6, 2023
58b1415
#2091: changing more import locations
mo-lottieturner Apr 6, 2023
5535fcf
#2091: hopefully the rest of the import locations
mo-lottieturner Apr 6, 2023
b66f271
#2091: correcting error in imports
mo-lottieturner Apr 11, 2023
488ab59
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Apr 13, 2023
7ee6fc7
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Apr 18, 2023
ad9feda
#2091: correcting path to LFRicKern in new file
mo-lottieturner Apr 18, 2023
f7858fb
#2091: hopefully fixing import error
mo-lottieturner Apr 18, 2023
aff6c35
#2091: hopefully fixing circular dependency issue
mo-lottieturner Apr 18, 2023
47c0c23
#2091: tidying up
mo-lottieturner Apr 20, 2023
ce20e1e
#2091 tidying up a bit that I accidentally untidied
mo-lottieturner Apr 20, 2023
2091921
#2091 changing names in the docs
mo-lottieturner Apr 20, 2023
225ff40
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Apr 25, 2023
2ee1f9a
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner May 22, 2023
bf0e3d5
#2091 renaming dynkern_test to lfrickern_test and correcting some err…
mo-lottieturner May 22, 2023
e36e28c
2091 adding test for LFRicKern.local_vars
mo-lottieturner May 22, 2023
807f3c6
2091 adding test for kernel argument with INC access when OpenMP
mo-lottieturner May 22, 2023
9db26c5
2091 working on last bit of test coverage, not working yet
mo-lottieturner May 23, 2023
66e51f9
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Jun 2, 2023
dbae330
#2091 commenting out failed attempt at test to get python tests passing
mo-lottieturner Jun 5, 2023
04ad8d0
#2091: more changes from LFRicCollection that didnt get picked up in …
mo-lottieturner Jun 5, 2023
b8445f4
#2091: wrong brackets!
mo-lottieturner Jun 5, 2023
951594b
PR #2091: Added coverage for 'continue' statement
TeranIvy Jul 24, 2023
7b37ac1
#2091 moving and renaming test file
mo-lottieturner Jul 25, 2023
f4c1982
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Jul 25, 2023
85db552
#2091 merging in master and resolving conflicts
mo-lottieturner Jul 25, 2023
06297f7
#2091 correcting BASE_PATH in moved test file
mo-lottieturner Jul 26, 2023
d236f67
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Aug 1, 2023
cf500e5
#2091 re-adding some tests that somehow got removed
mo-lottieturner Aug 2, 2023
c0ca2f5
Merge branch '2091_renaming_and_moving_dynkern' of github.com:stfc/PS…
mo-lottieturner Aug 2, 2023
c42e103
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Aug 2, 2023
96c66d2
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Aug 14, 2023
764d303
Merge branch 'master' into 2091_renaming_and_moving_dynkern
arporter Aug 14, 2023
06d3cc3
#2091 catching some DynKern -> LFRicKern comments
mo-lottieturner Aug 15, 2023
f18a1f7
Merge branch '2091_renaming_and_moving_dynkern' of github.com:stfc/PS…
mo-lottieturner Aug 15, 2023
7c08888
#2091 corrections from review
mo-lottieturner Aug 15, 2023
a05eeab
#2091 rest of changes from review
mo-lottieturner Aug 15, 2023
4a5afc0
#2091 removing local_vars from LFRicKern
mo-lottieturner Aug 16, 2023
d50e722
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Aug 16, 2023
e6ba478
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Sep 19, 2023
ecd83a6
#2091 correcting docstring for fs_descriptors
mo-lottieturner Sep 19, 2023
0bebfd5
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Sep 21, 2023
430e0a2
#2091 moving DynKern in __init__.py
mo-lottieturner Sep 25, 2023
2a91d86
Merge branch '2091_renaming_and_moving_dynkern' of github.com:stfc/PS…
mo-lottieturner Sep 25, 2023
e6175f9
#2091 replacing accidentally removed LFRicKern import from merge and …
mo-lottieturner Sep 25, 2023
f803bdd
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Sep 25, 2023
10301eb
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Sep 26, 2023
5cff290
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Oct 30, 2023
7853810
#2091 correcting wonky merging
mo-lottieturner Oct 30, 2023
882d890
#2091 more wonky merging
mo-lottieturner Oct 30, 2023
f82f1ad
#2091 hopefully the last of the wonky merging
mo-lottieturner Oct 30, 2023
29a6333
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Oct 30, 2023
ba8b6dd
#2091 even more wonky merging
mo-lottieturner Oct 30, 2023
cb68c6c
Merge branch '2091_renaming_and_moving_dynkern' of github.com:stfc/PS…
mo-lottieturner Oct 30, 2023
0babc06
#2091: still some more wonky merging
mo-lottieturner Oct 30, 2023
e59a8f1
#2091 still on the wonky merging
mo-lottieturner Oct 31, 2023
990cf82
#2091 some tidying up and more wonky merge corrections
mo-lottieturner Oct 31, 2023
dba6859
#2091: hopefully fixing merge bug
mo-lottieturner Nov 8, 2023
f210802
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Nov 8, 2023
f3fcdd7
#2091: final touches on review comments
mo-lottieturner Nov 8, 2023
3492a1d
Merge branch 'master' into 2091_renaming_and_moving_dynkern
mo-lottieturner Nov 9, 2023
eac784a
#2100 update changelog and UG
arporter Nov 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/psyclone/domain/lfric/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
'LFRicConstants',
'LFRicExtractDriverCreator',
'LFRicInvoke',
'LFRicInvokes',
'LFRicKern',
'LFRicKernCallFactory',
'LFRicLoopBounds',
Expand Down
57 changes: 39 additions & 18 deletions src/psyclone/domain/lfric/lfric_kern.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,9 @@ def _setup(self, ktype, module_name, args, parent, check=True):
# pylint: disable=import-outside-toplevel
from psyclone.dynamo0p3 import DynKernelArguments, FSDescriptors
# pylint: disable=too-many-branches, too-many-locals
CodedKern.__init__(self, DynKernelArguments,
KernelCall(module_name, ktype, args),
parent, check)
super().__init__(DynKernelArguments,
KernelCall(module_name, ktype, args),
parent, check)
# Remove "_code" from the name if it exists to determine the
# base name which (if LFRic naming conventions are
# followed) is used as the root for the module and subroutine
Expand Down Expand Up @@ -385,28 +385,33 @@ def is_intergrid(self):
def colourmap(self):
'''
Getter for the name of the colourmap associated with this kernel call.
arporter marked this conversation as resolved.
Show resolved Hide resolved

:returns: name of the colourmap (Fortran array).
:rtype: str

:raises InternalError: if this kernel is not coloured or the \
dictionary of inter-grid kernels and \
colourmaps has not been constructed.

'''
if not self.is_coloured():
raise InternalError(f"Kernel '{self.name}' is not inside a "
f"coloured loop.")
sched = self.ancestor(InvokeSchedule)
if self._is_intergrid:
invoke = self.ancestor(InvokeSchedule).invoke
invoke = sched.invoke
if id(self) not in invoke.meshes.intergrid_kernels:
raise InternalError(
f"Colourmap information for kernel '{self.name}' has "
f"not yet been initialised")
cmap = invoke.meshes.intergrid_kernels[id(self)].\
colourmap_symbol.name
else:
cmap = self.scope.symbol_table.lookup_with_tag("cmap").name
try:
cmap = sched.symbol_table.lookup_with_tag("cmap").name
except KeyError:
# We have to do this here as _init_colourmap (which calls this
# method) is only called at code-generation time.
cmap = sched.symbol_table.find_or_create_array(
"cmap", 2, ScalarType.Intrinsic.INTEGER,
tag="cmap").name

return cmap

Expand All @@ -415,30 +420,29 @@ def last_cell_all_colours_symbol(self):
'''
Getter for the symbol of the array holding the index of the last
cell of each colour.
arporter marked this conversation as resolved.
Show resolved Hide resolved

:returns: name of the array.
:rtype: str

:raises InternalError: if this kernel is not coloured or the \
dictionary of inter-grid kernels and \
colourmaps has not been constructed.
'''
if not self.is_coloured():
raise InternalError(f"Kernel '{self.name}' is not inside a "
f"coloured loop.")

if self._is_intergrid:
invoke = self.ancestor(InvokeSchedule).invoke
if id(self) not in invoke.meshes.intergrid_kernels:
raise InternalError(
f"Colourmap information for kernel '{self.name}' has "
f"not yet been initialised")
return invoke.meshes.intergrid_kernels[id(self)].\
last_cell_var_symbol
return (invoke.meshes.intergrid_kernels[id(self)].
last_cell_var_symbol)

ubnd_name = self.ancestor(Loop).upper_bound_name
const = LFRicConstants()

if (self.ancestor(Loop).upper_bound_name in
const.HALO_ACCESS_LOOP_BOUNDS):
if (ubnd_name in const.HALO_ACCESS_LOOP_BOUNDS):
return self.scope.symbol_table.find_or_create_array(
"last_halo_cell_all_colours", 2,
ScalarType.Intrinsic.INTEGER,
Expand Down Expand Up @@ -543,9 +547,6 @@ def all_updates_are_writes(self):
:rtype: bool

'''
if self.is_intergrid:
# This is not a special kernel
return False
accesses = set(arg.access for arg in self.args)
all_writes = AccessType.all_write_accesses()
all_writes.remove(AccessType.WRITE)
Expand Down Expand Up @@ -605,10 +606,11 @@ def gen_stub(self):
# pylint: disable=import-outside-toplevel
from psyclone.dynamo0p3 import (DynCellIterators, DynDofmaps,
DynFunctionSpaces, DynCMAOperators,
LFRicScalarArgs, DynBoundaryConditions,
DynBoundaryConditions,
DynLMAOperators, LFRicMeshProperties,
DynBasisFunctions, LFRicFields,
DynReferenceElement, DynStencils)
from psyclone.domain.lfric import LFRicScalarArgs
arporter marked this conversation as resolved.
Show resolved Hide resolved
for entities in [DynCellIterators, DynDofmaps, DynFunctionSpaces,
DynCMAOperators, LFRicScalarArgs, LFRicFields,
DynLMAOperators, DynStencils, DynBasisFunctions,
Expand Down Expand Up @@ -729,6 +731,25 @@ class creates the PSyIR schedule on first invocation which is

# Get the PSyIR Kernel Schedule(s)
routines = Fparser2Reader().get_routine_schedules(self.name, self.ast)
for routine in routines:
# If one of the symbols is not declared in a routine then
# this is only picked up when writing out the routine
# (raising a VisitorError), so we check here so that
# invalid code is not inlined. We use debug_string() to
# minimise the overhead.

# TODO #2271 could potentially avoid the need for
# debug_string() within. Sergi suggests that we may be
# missing the traversal of the declaration init
# expressions and that might solve the problem. I'm not so
# sure as we are talking about unknown symbols that will
# only be resolved in the back-end (or not). If I am right
# then one option would be to use the FortranWriter, but
# that would be bigger overhead, or perhaps just the
# declarations part of FortranWriter if that is possible.
# Also see TODO issue #2336 which captures the specific
# problem in LFRic that this fixes.
routine.debug_string()

if len(routines) == 1:
sched = routines[0]
Expand Down
2 changes: 1 addition & 1 deletion src/psyclone/domain/lfric/lfric_scalar_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class LFRicScalarArgs(LFRicCollection):

:param node: the Invoke or Kernel stub for which to manage the scalar \
arguments.
:type node: :py:class:`psyclone.dynamo0p3.DynKern` or \
:type node: :py:class:`psyclone.domain.lfric.LFRicKern` or \
:py:class:`psyclone.domain.lfric.LFRicInvoke`

'''
Expand Down
15 changes: 6 additions & 9 deletions src/psyclone/dynamo0p3.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,31 +57,28 @@
LFRicBuiltIn, BUILTIN_MAP)
from psyclone.domain.common.psylayer import PSyLoop
from psyclone.domain.lfric import (FunctionSpace, KernCallAccArgList,
KernCallArgList, KernStubArgList,
LFRicArgDescriptor, KernelInterface,
KernCallArgList, LFRicArgDescriptor,
LFRicCollection, LFRicConstants,
LFRicSymbolTable, LFRicInvoke,
LFRicKernCallFactory, LFRicScalarArgs,
LFRicKern)
LFRicSymbolTable, LFRicKernCallFactory,
LFRicKern, LFRicInvokes, LFRicTypes)
from psyclone.errors import GenerationError, InternalError, FieldNotFoundError
from psyclone.f2pygen import (AllocateGen, AssignGen, CallGen, CommentGen,
DeallocateGen, DeclGen, DoGen, IfThenGen,
ModuleGen, TypeDeclGen, UseGen, PSyIRGen)
from psyclone.parse.kernel import KernelType, getkerneldescriptors
from psyclone.parse.utils import ParseError

from psyclone.psyGen import (PSy, Invokes, InvokeSchedule, Arguments,
from psyclone.psyGen import (PSy, InvokeSchedule, Arguments,
KernelArgument, HaloExchange, GlobalSum,
DataAccess)
from psyclone.psyir.frontend.fortran import FortranReader
from psyclone.psyir.nodes import (Loop, Literal, Schedule, Reference,
ArrayReference, ACCEnterDataDirective,
ACCRegionDirective, OMPRegionDirective,
Routine, ScopingNode, StructureReference)
Routine, ScopingNode)
from psyclone.psyir.symbols import (INTEGER_TYPE, DataSymbol, ScalarType,
DeferredType, DataTypeSymbol,
ContainerSymbol, ImportInterface,
SymbolError)
ArrayType, UnknownFortranType)

# pylint: disable=too-many-lines
# --------------------------------------------------------------------------- #
Expand Down
7 changes: 4 additions & 3 deletions src/psyclone/tests/domain/lfric/dyn_proxies_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,14 @@
# POSSIBILITY OF SUCH DAMAGE.
# -----------------------------------------------------------------------------
# Author A. R. Porter, STFC Daresbury Lab
# Modified L. Turner, Met Office

''' This module tests the DynProxies class using pytest. '''

import os
import pytest
from psyclone.domain.lfric import LFRicConstants
from psyclone.dynamo0p3 import DynKern, DynProxies
from psyclone.domain.lfric import LFRicConstants, LFRicKern
from psyclone.dynamo0p3 import DynProxies
from psyclone.errors import InternalError
from psyclone.f2pygen import ModuleGen, SubroutineGen
from psyclone.parse.algorithm import parse
Expand Down Expand Up @@ -127,7 +128,7 @@ def test_initialise_errors(monkeypatch):
api=TEST_API)
psy = PSyFactory(TEST_API, distributed_memory=True).create(info)
invoke = psy.invokes.invoke_list[0]
kern = invoke.schedule.walk(DynKern)[0]
kern = invoke.schedule.walk(LFRicKern)[0]
proxies = DynProxies(invoke)
amod = ModuleGen("test_mod")
node = SubroutineGen(amod, name="a_sub")
Expand Down
21 changes: 11 additions & 10 deletions src/psyclone/tests/domain/lfric/kern_call_acc_arg_list_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# -----------------------------------------------------------------------------
# Authors: J. Henrichs, Bureau of Meteorology
# R. W. Ford and A. R. Porter, STFC Daresbury Lab
# I. Kavcic, Met Office
# Authors: J. Henrichs, Bureau of Meteorology
# R. W. Ford and A. R. Porter, STFC Daresbury Lab
# I. Kavcic, Met Office
# Modified: L. Turner, Met Office

''' This module tests the LFric KernCallAccArgList class.'''

Expand All @@ -42,8 +43,8 @@
import pytest

from psyclone.core import VariablesAccessInfo
from psyclone.domain.lfric import FunctionSpace, KernCallAccArgList
from psyclone.dynamo0p3 import DynKern
from psyclone.domain.lfric import (FunctionSpace, KernCallAccArgList,
LFRicKern)
from psyclone.errors import InternalError
from psyclone.parse.algorithm import parse
from psyclone import psyGen
Expand All @@ -57,14 +58,14 @@

def test_acc_arg_list_cell_map(dist_mem, monkeypatch):
'''Test the cell_map() method.'''
# We need a DynKern in order to construct an instance of KernCallAccArgList
# We need a LFRicKern in order to construct an instance of KernCallAccArgList
_, invoke_info = parse(os.path.join(BASE_PATH,
"22.0_intergrid_prolong.f90"),
api=TEST_API)
psy = psyGen.PSyFactory(TEST_API,
distributed_memory=dist_mem).create(invoke_info)
schedule = psy.invokes.invoke_list[0].schedule
kern = schedule.walk(DynKern)[0]
kern = schedule.walk(LFRicKern)[0]
arg_list = KernCallAccArgList(kern)
# Check that the cell_map method works as expected.
arg_list.cell_map()
Expand All @@ -85,7 +86,7 @@ def test_stencil_2d():
name="invoke_0_testkern_stencil_multi_type",
dist_mem=False)
sched = invoke.schedule
kern = sched.walk(DynKern)[0]
kern = sched.walk(LFRicKern)[0]
arg_list = KernCallAccArgList(kern)
arg_list.stencil_2d(kern.arguments._args[1])
# This should result in the whole stencil dofmap being added as an arg.
Expand All @@ -102,7 +103,7 @@ def test_fs_compulsory_field_no_cell_column():
name="invoke_0_testkern_domain_type",
dist_mem=False)
sched = invoke.schedule
kern = sched.walk(DynKern)[0]
kern = sched.walk(LFRicKern)[0]
arg_list = KernCallAccArgList(kern)
fspace = FunctionSpace("w3", kern.arguments)
arg_list.fs_compulsory_field(fspace)
Expand All @@ -114,7 +115,7 @@ def test_fs_intergrid():
_, invoke = get_invoke("22.2_intergrid_3levels.f90", TEST_API,
name="invoke_0", dist_mem=False)
sched = invoke.schedule
kernels = sched.walk(DynKern)
kernels = sched.walk(LFRicKern)
prolong_kern = kernels[0]
restrict_kern = kernels[2]
fspace = FunctionSpace("any_space_1", restrict_kern.arguments)
Expand Down
5 changes: 2 additions & 3 deletions src/psyclone/tests/domain/lfric/lfric_scalar_mdata_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
# I. Kavcic, A. Coughtrie, L. Turner and O. Brunt, Met Office;
# C. M. Maynard, Met Office/University of Reading;
# J. Henrichs, Bureau of Meteorology.
# Modified by L. Turner, Met Office

'''
Module containing pytest tests for the general LFRic scalar arguments
Expand All @@ -48,8 +47,8 @@
from fparser import api as fpapi

from psyclone.domain.lfric import (LFRicKern, LFRicArgDescriptor,
LFRicScalarArgs)
from psyclone.dynamo0p3 import DynKernMetadata, LFRicConstants
LFRicScalarArgs, LFRicConstants)
from psyclone.dynamo0p3 import DynKernMetadata
from psyclone.errors import InternalError, GenerationError
from psyclone.f2pygen import ModuleGen
from psyclone.parse.algorithm import parse
Expand Down
11 changes: 4 additions & 7 deletions src/psyclone/tests/dynamo0p3_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1485,7 +1485,7 @@ def test_dynkernelargument_psyir_expression(monkeypatch):
api=TEST_API)
psy = PSyFactory(TEST_API, distributed_memory=True).create(invoke_info)
first_invoke = psy.invokes.invoke_list[0]
kern = first_invoke.schedule.walk(DynKern)[0]
kern = first_invoke.schedule.walk(LFRicKern)[0]
psyir = kern.arguments.args[0].psyir_expression()
assert isinstance(psyir, Reference)
assert psyir.symbol.name == "mm_w0_local_stencil"
Expand All @@ -1498,7 +1498,7 @@ def test_dynkernelargument_psyir_expression(monkeypatch):
api=TEST_API)
psy = PSyFactory(TEST_API, distributed_memory=True).create(invoke_info)
first_invoke = psy.invokes.invoke_list[0]
kern = first_invoke.schedule.walk(DynKern)[0]
kern = first_invoke.schedule.walk(LFRicKern)[0]
psyir = kern.arguments.args[1].psyir_expression()
assert isinstance(psyir, Reference)
assert psyir.symbol.name == "cma_op1_cma_matrix"
Expand Down Expand Up @@ -3670,12 +3670,9 @@ def test_haloex_not_required(monkeypatch):

def test_lfriccollection_err1():
''' Check that the LFRicCollection constructor raises the expected
error if it is not provided with a LFRicKern or LFRicInvoke. '''
_, info = parse(os.path.join(BASE_PATH, "1_single_invoke.f90"),
api=TEST_API)
psy = PSyFactory(TEST_API, distributed_memory=True).create(info)
error if it is not provided with an LFRicKern or LFRicInvoke. '''
with pytest.raises(InternalError) as err:
_ = DynProxies(psy)
_ = DynProxies(None)
assert ("LFRicCollection takes only an LFRicInvoke or an LFRicKern but"
in str(err.value))

Expand Down
8 changes: 3 additions & 5 deletions src/psyclone/transformations.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
# Authors R. W. Ford, A. R. Porter, S. Siso and N. Nobre, STFC Daresbury Lab
# A. B. G. Chalk STFC Daresbury Lab
# J. Henrichs, Bureau of Meteorology
# Modified I. Kavcic, J. G. Wallwork and L. Turner, Met Office

# Modified I. Kavcic, J. G. Wallwork, O. Brunt and L. Turner, Met Office

''' This module provides the various transformations that can be applied to
PSyIR nodes. There are both general and API-specific transformation
Expand All @@ -48,11 +47,10 @@

from psyclone import psyGen
from psyclone.configuration import Config
from psyclone.domain.lfric import KernCallArgList, LFRicConstants
from psyclone.core import Signature, VariablesAccessInfo
from psyclone.domain.lfric import KernCallArgList, LFRicConstants, LFRicKern
from psyclone.dynamo0p3 import DynHaloExchangeEnd, DynHaloExchangeStart, \
DynInvokeSchedule
from psyclone.dynamo0p3 import LFRicHaloExchangeEnd, LFRicHaloExchangeStart, \
DynInvokeSchedule, DynLoop
from psyclone.errors import InternalError
from psyclone.gocean1p0 import GOInvokeSchedule
from psyclone.nemo import NemoInvokeSchedule
Expand Down
Loading