Skip to content

Commit

Permalink
#1010 LFric bounds names are now given by the index of counting only …
Browse files Browse the repository at this point in the history
…LFRicLoops
  • Loading branch information
sergisiso committed Feb 14, 2025
1 parent 71f85e2 commit 55341ea
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 55 deletions.
3 changes: 1 addition & 2 deletions src/psyclone/domain/lfric/lfric_kern.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@
Loop, Literal, Reference, KernelSchedule, Container, Routine)
from psyclone.psyir.symbols import (
DataSymbol, ScalarType, ArrayType, UnsupportedFortranType, DataTypeSymbol,
UnresolvedType, ContainerSymbol, UnknownInterface, INTEGER_TYPE,
UnresolvedInterface)
UnresolvedType, ContainerSymbol, INTEGER_TYPE, UnresolvedInterface)


class LFRicKern(CodedKern):
Expand Down
5 changes: 3 additions & 2 deletions src/psyclone/domain/lfric/lfric_loop_bounds.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
''' This module provides the LFRicLoopBounds Class that handles all variables
required for specifying loop limits within an LFRic PSy-layer routine.'''

from psyclone.domain.lfric import LFRicCollection
from psyclone.domain.lfric import LFRicCollection, LFRicLoop
from psyclone.psyir.nodes import Assignment, Reference, Loop


Expand All @@ -59,7 +59,8 @@ def initialise(self, cursor: int) -> int:
:returns: Updated cursor value.
'''
loops = self._invoke.schedule.loops()
loops = filter(lambda x: isinstance(x, LFRicLoop),
self._invoke.schedule.loops())

if not loops:
return cursor
Expand Down
102 changes: 51 additions & 51 deletions src/psyclone/tests/dynamo0p3_basis_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,8 +199,8 @@ def test_single_kern_eval(tmpdir):
assert " type(field_type), intent(in) :: f0" in code
assert " type(field_type), intent(in) :: cmap" in code
assert " integer(kind=i_def) :: cell" in code
assert " integer(kind=i_def) :: loop4_start" in code
assert " integer(kind=i_def) :: loop4_stop" in code
assert " integer(kind=i_def) :: loop0_start" in code
assert " integer(kind=i_def) :: loop0_stop" in code
assert " integer(kind=i_def) :: df_nodal" in code
assert " integer(kind=i_def) :: df_w0" in code
assert " integer(kind=i_def) :: df_w1" in code
Expand Down Expand Up @@ -276,11 +276,11 @@ def test_single_kern_eval(tmpdir):
" enddo\n"
"\n"
" ! Set-up all of the loop bounds\n"
" loop4_start = 1\n"
" loop4_stop = f0_proxy%vspace%get_ncell()\n"
" loop0_start = 1\n"
" loop0_stop = f0_proxy%vspace%get_ncell()\n"
"\n"
" ! Call kernels\n"
" do cell = loop4_start, loop4_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_code(nlayers_f0, f0_data, "
"cmap_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
Expand Down Expand Up @@ -312,8 +312,8 @@ def test_single_kern_eval_op(tmpdir):
assert "type(field_type), intent(in) :: f1" in code
assert "type(operator_type), intent(in) :: op1" in code
assert "integer(kind=i_def) :: cell" in code
assert "integer(kind=i_def) :: loop4_start" in code
assert "integer(kind=i_def) :: loop4_stop" in code
assert "integer(kind=i_def) :: loop0_start" in code
assert "integer(kind=i_def) :: loop0_stop" in code
assert "integer(kind=i_def) :: df_nodal" in code
assert "integer(kind=i_def) :: df_w2" in code
assert "integer(kind=i_def) :: df_w3" in code
Expand Down Expand Up @@ -359,9 +359,9 @@ def test_single_kern_eval_op(tmpdir):
" enddo\n"
)
assert init_output in code
assert "loop4_stop = op1_proxy%fs_from%get_ncell()\n" in code
assert "loop0_stop = op1_proxy%fs_from%get_ncell()\n" in code
kern_call = (
" do cell = loop4_start, loop4_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_op_code(cell, nlayers_op1, "
"op1_proxy%ncell_3d, op1_local_stencil, f1_data, ndf_w0, ndf_w2, "
"basis_w2_on_w0, ndf_w3, undf_w3, map_w3(:,cell), "
Expand Down Expand Up @@ -730,10 +730,10 @@ def test_qr_plus_eval(tmpdir):
assert "type(field_type), intent(in) :: m2" in code
assert "type(quadrature_xyoz_type), intent(in) :: qr" in code
assert "integer(kind=i_def) :: cell" in code
assert "integer(kind=i_def) :: loop4_start" in code
assert "integer(kind=i_def) :: loop4_stop" in code
assert "integer(kind=i_def) :: loop5_start" in code
assert "integer(kind=i_def) :: loop5_stop" in code
assert "integer(kind=i_def) :: loop0_start" in code
assert "integer(kind=i_def) :: loop0_stop" in code
assert "integer(kind=i_def) :: loop1_start" in code
assert "integer(kind=i_def) :: loop1_stop" in code
assert "integer(kind=i_def) :: df_nodal" in code
assert "integer(kind=i_def) :: df_w0" in code
assert "integer(kind=i_def) :: df_w1" in code
Expand Down Expand Up @@ -844,16 +844,16 @@ def test_qr_plus_eval(tmpdir):
" call qr%compute_function(DIFF_BASIS, m2_proxy%vspace, "
"diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n")
assert output_setup in code
assert (" loop4_stop = f0_proxy%vspace%get_ncell()\n"
" loop5_start = 1\n"
" loop5_stop = f1_proxy%vspace%get_ncell()\n" in code)
assert (" loop0_stop = f0_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = f1_proxy%vspace%get_ncell()\n" in code)
output_kern_call = (
" do cell = loop4_start, loop4_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_code(nlayers_f0, f0_data, "
"f1_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
" enddo\n"
" do cell = loop5_start, loop5_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_qr_code(nlayers_f1, f1_data, f2_data, "
"m1_data, a, m2_data, istp, ndf_w1, undf_w1, "
"map_w1(:,cell), basis_w1_qr, ndf_w2, undf_w2, map_w2(:,cell), "
Expand Down Expand Up @@ -906,18 +906,18 @@ def test_two_eval_same_space(tmpdir):
" enddo\n"
"\n"
" ! Set-up all of the loop bounds\n"
" loop4_start = 1\n"
" loop4_stop = f0_proxy%vspace%get_ncell()\n"
" loop5_start = 1\n"
" loop5_stop = f2_proxy%vspace%get_ncell()\n"
" loop0_start = 1\n"
" loop0_stop = f0_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = f2_proxy%vspace%get_ncell()\n"
"\n"
" ! Call kernels\n"
" do cell = loop4_start, loop4_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_code(nlayers_f0, f0_data, "
"f1_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
" enddo\n"
" do cell = loop5_start, loop5_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_eval_code(nlayers_f2, f2_data, "
"f3_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
Expand Down Expand Up @@ -988,18 +988,18 @@ def test_two_eval_diff_space(tmpdir):
" enddo\n"
"\n"
" ! Set-up all of the loop bounds\n"
" loop8_start = 1\n"
" loop8_stop = f0_proxy%vspace%get_ncell()\n"
" loop9_start = 1\n"
" loop9_stop = op1_proxy%fs_from%get_ncell()\n"
" loop0_start = 1\n"
" loop0_stop = f0_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = op1_proxy%fs_from%get_ncell()\n"
"\n"
" ! Call kernels\n"
" do cell = loop8_start, loop8_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_code(nlayers_f0, f0_data, "
"f1_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
" enddo\n"
" do cell = loop9_start, loop9_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_eval_op_code(cell, nlayers_op1, "
"op1_proxy%ncell_3d, op1_local_stencil, f2_data, ndf_w0, ndf_w2, "
"basis_w2_on_w0, ndf_w3, undf_w3, map_w3(:,cell), "
Expand Down Expand Up @@ -1123,17 +1123,17 @@ def test_two_eval_op_to_space(tmpdir):
" enddo\n"
" enddo\n")
assert basis_comp in code
assert (" loop10_start = 1\n"
" loop10_stop = f0_proxy%vspace%get_ncell()\n"
" loop11_start = 1\n"
" loop11_stop = f2_proxy%vspace%get_ncell()\n" in code)
assert (" loop0_start = 1\n"
" loop0_stop = f0_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = f2_proxy%vspace%get_ncell()\n" in code)
kernel_calls = (
" do cell = loop10_start, loop10_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_code(nlayers_f0, f0_data, "
"f1_data, ndf_w0, undf_w0, map_w0(:,cell), basis_w0_on_w0, "
"ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n"
" enddo\n"
" do cell = loop11_start, loop11_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_eval_op_to_code(cell, nlayers_op1, "
"op1_proxy%ncell_3d, op1_local_stencil, f2_data, "
"ndf_w2, basis_w2_on_w3, diff_basis_w2_on_w3, ndf_w0, ndf_w3, "
Expand Down Expand Up @@ -1219,19 +1219,19 @@ def test_eval_diff_nodal_space(tmpdir):
)
assert expected_compute in code

assert (" loop12_start = 1\n"
" loop12_stop = f1_proxy%vspace%get_ncell()\n"
" loop13_start = 1\n"
" loop13_stop = f2_proxy%vspace%get_ncell()\n" in code)
assert (" loop0_start = 1\n"
" loop0_stop = f1_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = f2_proxy%vspace%get_ncell()\n" in code)

expected_kern_call = (
" do cell = loop12_start, loop12_stop, 1\n"
" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_op_to_code(cell, nlayers_op2, "
"op2_proxy%ncell_3d, op2_local_stencil, f1_data, "
"ndf_w2, basis_w2_on_w3, diff_basis_w2_on_w3, ndf_w0, ndf_w3, "
"undf_w3, map_w3(:,cell), diff_basis_w3_on_w3)\n"
" enddo\n"
" do cell = loop13_start, loop13_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_eval_op_to_w0_code(cell, nlayers_op1, "
"op1_proxy%ncell_3d, op1_local_stencil, f0_data, "
"f2_data, ndf_w2, basis_w2_on_w0, diff_basis_w2_on_w0, "
Expand Down Expand Up @@ -1389,25 +1389,25 @@ def test_2eval_1qr_2fs(tmpdir):
" call qr%compute_function(DIFF_BASIS, m2_proxy%vspace, "
"diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n") == 1

assert (" loop8_start = 1\n"
" loop8_stop = f0_proxy%vspace%get_ncell()\n"
" loop9_start = 1\n"
" loop9_stop = op1_proxy%fs_from%get_ncell()\n"
" loop10_start = 1\n"
" loop10_stop = f1_proxy%vspace%get_ncell()\n" in code)
assert (" loop0_start = 1\n"
" loop0_stop = f0_proxy%vspace%get_ncell()\n"
" loop1_start = 1\n"
" loop1_stop = op1_proxy%fs_from%get_ncell()\n"
" loop2_start = 1\n"
" loop2_stop = f1_proxy%vspace%get_ncell()\n" in code)

assert (" do cell = loop8_start, loop8_stop, 1\n"
assert (" do cell = loop0_start, loop0_stop, 1\n"
" call testkern_eval_2fs_code(nlayers_f0, f0_data, "
"f1_data, ndf_w0, undf_w0, map_w0(:,cell), ndf_w1, undf_w1,"
" map_w1(:,cell), diff_basis_w1_on_w0, diff_basis_w1_on_w1)\n"
" enddo\n"
" do cell = loop9_start, loop9_stop, 1\n"
" do cell = loop1_start, loop1_stop, 1\n"
" call testkern_eval_op_code(cell, nlayers_op1, "
"op1_proxy%ncell_3d, op1_local_stencil, m2_data, "
"ndf_w0, ndf_w2, basis_w2_on_w0, ndf_w3, undf_w3, map_w3(:,cell),"
" diff_basis_w3_on_w0)\n"
" enddo\n"
" do cell = loop10_start, loop10_stop, 1\n"
" do cell = loop2_start, loop2_stop, 1\n"
" call testkern_qr_code(nlayers_f1, f1_data, "
"f2_data, m1_data, a, m2_data, istp, ndf_w1, "
"undf_w1, map_w1(:,cell), basis_w1_qr, ndf_w2, undf_w2, "
Expand Down

0 comments on commit 55341ea

Please sign in to comment.