Psyclone

Latest version: v2.5.0

Safety actively analyzes 621924 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

2.4.0

1) PR 1758 for 1741. Splits the PSyData read functionality into a
standalone module to remove dependence on infrastructure for
driver code.

2) PR 1766 FOR 1764. Fixes various syntax errors in some of the
Fortran test files.

3) PR 1759 for 1752. Updates to GOcean examples so that F90FLAGS
is used consistently and is also used when linking.

4) PR 1700. Various improvements to the example NEMO processing
scripts.

5) PR 1762 for 1743. Ensures declaration of precision variables
in PSyAD test harness.

6) PR 1774 for 1773. Fixes syntax error in test Fortran file.

7) PR 1620 for 1555. Create Algorithm Layer for a Kernel.

8) PR 1767 for 1739. Fixes dep-analysis bug whereby CMA operator
arguments to LFRic kernels were not given correct access value.

9) PR 1763 for 1717. Fixes invalid adjoint names for subroutine
and module.

10) PR 1776 for 1775. Fixes post_region_code_gen and improves
test fixtures.

11) PR 1784 towards 1779. Removes the use of config-provided bounds
from the NemoRange2Loop Transformation.

12) PR 1765 for 1724. Remove kernel use statements from
processed algorithm layer code.

13) PR 1785 for 1771. Refactor algorithm-creation functionality.

14) PR 1769 for 1721. Fixes bugs in use of sympy simplify() and
expand().

15) PR 1791 for 1780. Add setval_random built-in in LFRic API.

16) PR 1778 for 1751. Add ReplaceInductionVariableTrans transformation.

17) PR 1652 for 1645. Symbols representing LFRic BuiltIn Functors

18) PR 1795 for 1583. Bug fix for PSyAD for expressions involving
a unary minus.

19) PR 1809. A few fixes for code style issues.

20) PR 1803 for 1797. Adds support for logical variables to the
PSyData API.

21) PR 1804 for 637. Extends the dependence analysis to support
LFRic built-in kernels.

22) PR 1790 for 1787. Adds HoistLoopBoundsExprTrans transformation
which hoists complex loop-bound expressions out of loops.

23) PR 1811 for 1810. Separate LFRic LMA Operator infrastructure
into its own file.

24) PR 1808 for 1681. Extends PSyAD to reject functions.

25) PR 1633 towards 1631. New implementation of kernel meta-data
parser for GOcean API.

26) PR 1821 for 1557. Extends PSyAD to support LFRic mixed-
precision kernels.

27) PR 1551 towards 1338. Add OpenMP Clauses and its referenced
variables as part of the PSyIR tree.

28) PR 1838 for 1704. Update replace_with method to take into
account named arguments.

29) PR 1847. Make a subSignature a Signature and allow
Signature.to_language w/o arguments

30) PR 1831 for 1735. Changes the directory structure in the
test LFRic infrastructure to mimic that in the full LFRic
infrastructure. Alter the testing infrastructure to use the
Makefile to build the LFRic library.

31) PR 1814 towards 924. Add new PSyIR InlineTransformation.

32) PR 1819 for 1815. Forbid OMPTarget regions from containing
CodeBlock nodes.

33) PR 1830 for 1828. Fixes to enable explicit OpenACC Loop
parallelism with UM.

34) PR 1855 for 1840. Fix bug with dependency analysis when an
expression has the same array reference with and without indices.

35) PR 1827 for 1826. Adds support for SIR intrinsics.

36) PR 1839 for 1782. Adds a -api option to the PSyAD script.

37) PR 1844 towards 1823. Makes module inlining work in LFRic
when the same kernel is used multiple times.

38) PR 1825 for 1576. Adds the Reference2ArrayRangeTrans
transformation.

39) PR 1846. Fixes to various docstrings in transformations.py
and node.py.

40) PR 1845 for 1813. Adds a standalone PSyData extraction
library (that uses only Fortran IO).

41) PR 1836 for 1834. Adds support for explicit array-range
declarations to the dotproducttrans transformation.

42) PR 1871 for 1870. Fixes typo in link in User Guide.

43) PR 1875 for 1874. Remove pytest-pep257 dependency from setup.py

44) PR 1860 for 1538. Fixes search for config file when
`python setup.py install` used instead of pip and adds yaml config
file to tell RTD to use pip and Python 3.8 (for interop. with
SymPy).

45) PR 1768 for 1711. Add initial Sum2CodeTrans transformation.

46) PR 1885 for 1878. Update FortCL submodule to head of master to
fix invalid-boz compilation errors with newer versions of gfortran.

47) PR 1890 for 1889. Fix test to avoid temporary files being
left after pytest run.

48) PR 1850 towards 1799. Initial PSyIR node.datatype implementation
to query the resulting datatype of a PSyIR subtree.

49) PR 1869 for 1868. Extend PSyAD to make use of the
Reference2ArrayRangeTrans.

50) PR 1880 for 1865. Improves support for function calls in the
PSyIR by ensuring the associated RoutineSymbol has the correct
datatype.

51) PR 1894 for 1893. Fix bug in is_upper/lower_bound for UnknownTypes.

52) PR 1853 for 1829. Add OMP teams distribute parallel do directive
and refactor OMPLoopTrans.

53) PR 1900 for 1893. Fix bug in is_upper/lower_bound for non-typed
Symbols.

54) PR 1782 for 1496. Adds initial support for PSyAD test
harness generation for LFRic kernels. Some issues remain.

55) PR 1807 towards 1806. Adds PSyIR support for LFRic kernel
metadata.

56) PR 1906 for 1896. Update HoistLocalArrayTrans to avoid hoisting
parameter arrays and, unless explicitly requested, device parallel routines.

57) PR 1901 towards 1892 and 1898. Add support for storing and
querying the index of a metadata argument.

58) PR 1884 for 1882. Extends the inlining transformation to support
inlining of functions.

59) PR 1912 for 1851. Fixes pycodestyle (2.9) errors/warnings for
with Python 3.10.

60) PR 1899 towards 1823. Refactors KernelModuleInlineTrans so that
the in-lining happens at transformation time rather than code-
generation time.

61) PR 1852 for 1750. Adds an option to VariablesAccessInfo to
report/not report array arguments as first parameter to
lbound/ubound/size as read access. This fixes several issues with the
dependency tools.

62) PR 1867 for 1861. Significantly improves test coverage,
especially of the compilation-testing utilities.

63) PR 1924 for 1923. Fix issues building Developer and Reference
guides.

64) PR 1913 for 1848. Fix issues with case-sensitivity in the
SymbolTables.resolve_imports method.

65) PR 1917 for 1916. Extends InlineTrans to support calls to
routines in different Containers.

66) PR 1940. Replace Python 3.10 with 3.11 in GHA test suite.

67) PR 1943 for 1942. Fixes incorrect path in tutorial
Makefile setup.

68) PR 1905 for 1903. OpenMP schedule can be set to "none", which skips
the schedule clause in the OpenMP directive. This is the new default in
generic PSyIR (GOcean and LFRic still default to "static").

69) PR 1892 towards 1824. get_kernel_schedule supports resolving
interfaces (e.g. for the LFRic mixed precision kernels).

70) PR 1911 for 1909. Update fparser dependency.

71) PR 1908 for 1879. Completes the new meta-data parsing
functionality for the LFRic API.

72) PR 1918 for 1883. Updates kern_call_arg_list() (for LFRic) to
use PSyIR. (Step towards using PSyIR in LFRic PSy-layer generation
and required for PSyKE driver generation.)

73) PR 1898 towards 1708. Extends PSyAD LFRic harness support to
kernels with field arguments that contain geometry information.

74) PR 1982 for 1981. Updates the GHA configuration to use
Python 3.7 instead of 3.6.

75) PR 1956 for 1955. Updates the tests/.pylintrc file to remove
unsupported options.

76) PR 1888 for 1783. Adds NEMO OpenMP transformation scripts
to the examples.

77) PR 1933 for 1902. Adds run-time checks when hoisting
local work arrays.

78) PR 1963 towards 1883. More work to improving the use of PSyIR
in LFRic (as needed for PSyKE driver creation).

79) PR 1964 for 1961. Adds lower_to_language_level to DynLoop to
ensure loop variable names preserved in PSyKE driver creation.

80) PR 1952 for 310. Adds support for ACCEnterData and ACCUpdate
directives in the NEMO API.

81) PR 1925 for 1832. Add a 'force' option to the ParallelLoopTrans.

82) PR 1988 for 1507. Drop 'six' dependency and fix many pylint issues.

83) PR 1968 towards 1823. Fixes additional issues with module-
inlining in LFRic. (Interfaces, imported global variables and some
validation problems.)

84) PR 1996. Addendum to 1952 to cover missed lines.

85) PR 1994 for 1986. Fix issues with LFRic OMP support by skipping
dependence analysis for coloured loops.

86) PR 1997 for 888. Updates the handling of the '-v'
command-line flag for requesting version information. The
psyclone script will now quit after outputting the version
information.

87) PR 1970 for 1966. Add an overwrite_datatype option to
StructureReferences for when an API knows what type a DeferedType is.

88) PR 2003. Pins the Sphinx version to < 6.1 to avoid a bug in
the link-checking functionality. Also corrects various links to
the VirtualBox site.

89) PR 1972 for 1967. Ensures that proper Signatures are created
for structure accesses that appear in LFRic kernel arguments.

90) PR 1907 for 1366. Introduces the IntrinsicCall node and the
IntrinsicSymbol symbol. Adds ALLOCATE, DEALLOCATE and RANDOM_NUMBER
intrinsics.

91) PR 2007 for 2000. Removes pinning of Sphinx version in setup.py
now that the linkcheck bug has been fixed in a new release.

92) PR 1976 for 1974. Fixes issues with literal constants and
array accesses in VariableAccessInfo for the LFRic API.

93) PR 2015 for 2012. Fixes crash in access-information
collection when there is an LFRic 'domain' loop.

94) PR 2014. Extends psyir_from_source() so that the caller
can specify if the Fortran is in fixed format.

95) PR 1993 towards 1953. Extends the LFRicKernelMetadata
class to support stencil specifications.

96) PR 2020 for 2019. Fix inconsistencies in handling of precision
symbols

97) PR 2023 for 1975. Extends DynReferenceElement to ensure that
it adds related kernel arguments to KernCallArgList as PSyIR.

98) PR 2030 for 1529. Update eg19 Makefile so that compilation
works.

99) PR 2029 for 1567. Fix visibility issues with imported symbols.

100) PR 2024 for 1984. Fixes the dependence analysis for the case
where a single element of an array of fields is passed as an
argument to an LFRic built-in.

101) PR 1980 for 1978. Updated LFRic Infrastructure files in
PSyclone repository and PSyData libraries to support 32- and
64-bit mixed precision.

102) PR 2034 for 1864: Add support for adjoint test-harness
generation for kernels with operator arguments.

103) PR 2038 for 1998. Adds support for r_tran_operator_type to
LFRic (dynamo0.3).

104) PR 2036 for 2033. Splits core/access_info into its constiutent
classes and moves utility functions out of the DependencyTools
module.

105) PR 2056 for 2055. Extends the Reference2ArrayRange
transformation such that it rejects any References that are args to
the DEALLOCATE intrinsic.

106) PR 2047 for 2046. Adds a 'return' statement to the
lower_to_language_level() methods.

107) PR 2032 for 92. Forbid include statements (which should have been
processed by the preprocessor or fparser before PSyclone).

108) PR 1973 for 1904. Fix inlining issues with complex access
expressions (e.g. array offsets and partial derived types accesses).

109) PR 2044 for 1295. Changes LFRic psyir to avoid use of exec
and ensures that LFRicConstants is not created *before* the config.
file has been read.

110) PR 2066 for 1587. Introduces new DebugWriter visitor for
fast generation of Fortran-like content in error messages.

111) PR 1914 for 1891. Improves error handling when there are
undeclared arguments.

112) PR 2067 towards 1618. Fixes bugs relating to gh_sum for
scalars and use of any_space_* spaces in the new metadata
handling. Also corrects a (tested) docstring so that it sets
up a Config object first.

113) PR 2063. Improve search for optimisation script and handling
of any errors when it is imported.

114) PR 2071 for 2042. Adds support for the Fortran 'parameter'
statement to the fparser2 frontend.

115) PR 2068 for 352 and 1422. Adds a 'DoWhile' node to represent
Fortran DO WHILE and unbounded DO loops.

116) PR 2072 tidying of IfBlock following 2068.

117) PR 2061 towards 598. Improves the use of dependence analysis
in the OMP transformations to infer which variables are firstprivate
in some cases.

118) PR 2059 for 2057. Adds kernel-extraction support for the
NEMO API.

119) PR 2073. Fixes typos across the repo.

120) PR 2025 for 1483. Adds driver generation for LFRic kernel
extraction (PSyKE).

121) PR 2048 towards 1772. Implements a new MetadataToArgumentsRules
class using the new LFRic metadata functionality.

122) PR 2085 for 840. Add support for minval, maxval and sum Fortran
intrinsics.

123) PR 2077 for 2075. Specify LFRic built-in metadata descriptions
within LFRic built-in classes.

124) PR 2104 towards 1618. Fix invalid use of subroutine instead of
function in an LFRic example algorithm.

125) PR 2098 towards 2091. Split off and rename DynKernCallFactory
to LFRicKernCallFactory.

126) PR 2103 towards 1618. Support Fortran interfaces whose symbols
are already declared.

127) PR 2099. Update of tutorials.

128) PR 1937 for 1935. Adds all LFRic TL and adjoint kernels under
examples.

129) PR 2112 towards 1618. Splits LFRic eg11 source file into
driver and algorithm.

130) PR 2118 for 2117. Ensure build flags passed to LFRic
infrastructure

131) PR 2026 for 1991. Improves the support for building a
standalone driver for an extracted kernel. All required modules are
now inlined into the driver source file.

132) PR 2086 for 2013. Adds support for logical scalar arguments
in PSyAD test harness generation.

133) PR 2060 towards 1618. Adds an optional code path for LFRic
Algorithm-layer handling using the new metadata processing
functionality.

134) PR 2123. Updates GOcean project link in UG.

135) PR 2121 for 2109. Updates PSyclone to fparser 0.1.1 release.

136) PR 2128 towards 1618. Bug fix in LFRicAlgInvoke2PSyCallTrans
for kernels requiring more than 1 quadrature object.

137) PR 967 towards 2132. Add GH workflows for self-hosted runner.

138) PR 2084 for 1801. Improve handling of assume-shape arrays with
specified bounds.

139) PR 2129 towards 1618. Bug fix for -ve Literal args to kernels
in PSyIR handling of LFRic Alg Layer.

140) PR 2133 for 2126. Add RTD YAML config files to allow the
documentation (user guide, developer guide etc) to be managed
separately and to allow software environments other than the
default to be specified.

141) PR 2092 for 2008. Refactors Symbol interfaces and adds support
for Static/SAVE variables.

142) PR 2089 for 2005. Add a SymbolTable merge method and improve symbol
renaming capabilities.

143) PR 2141 towards 1618. Add support for Symbols imported from
Containers with renaming.

144) PR 2136 for 2134. Fix compilation tests bug with assumed shape arrays.

145) PR 2115 for 2114. Fortran allocate with type-spec becomes a CodeBlock.

146) PR 2130 towards 1161. Adds support for HUGE and TINY intrinsics.

147) PR 2095 towards 2091. Split off and rename DynInvoke to LFRicInvoke.

148) PR 2146 for 2145. Skip CI link checks for mybinder as they
occasionally fail.

149) PR 2135 towards 1618. Adds (limited) PSyIR support for Fortran
interfaces without a name.

150) PR 2152 for 2149. Adds checks in Literal constructor that
supplied string is a valid format.

151) PR 2143 for 2043. Adds basic PSyIR support for Fortran COMMON
blocks.

152) PR 2150 towards 2132. Improve self-hosted CI workflow.

153) PR 2090 for 1545. Split off and rename DynCollection to
LFRicCollection.

154) PR 2140 for 2139. Encapsulates the result of the dependency-
analysis' get_in_out_parameters() in a single class.

155) PR 2160 for 2159. Adds support for LFRic kernel arguments with two
new precision names (r_bl and r_phys).

156) PR 2170 for 2169. Correct import of fparser2
Declaration_Construct.

157) PR 2131 towards 1618. Improves the error handling when we find
a Routine with the same name as an LFRic Builtin.

158) PR 2147 for 2119. Add elemental and pure routine attributes.

159) PR 2181 for 2175. Bug fixes for processing of Fortran
declarations and integer literals.

160) PR 2107 for 2106. Improvements to NEMO processing scripts and
inclusion in Integration Testing.

161) PR 2198 for 2194. Fixes handling of a function where the
precision of the result is only defined within the function.

162) PR 2187 towards 1618. Remove builtin use statements when
lowering.

163) PR 2191 for 2185. Fix element order used in PSyAD test
harness.

164) PR 2208 towards 2205. Ensures that functions or subroutines
that CONTAIN other functions/subroutines are put into a CodeBlock.

165) PR 2124 fir 2101. Refactors OpenMP inference of private/first-
private variables and those requiring synchronisation.

166) PR 2210 for 2206. Ensure symbol renaming included when deep-
copying a symbol table.

167) PR 2209 for 2204. Add support for EQV and NEQV and fix select
case bug with logical comparisons.

168) PR 2211 for 2183. Change PSyAD test-harness generation to use
the same variable names as the TL kernel being tested.

169) PR 2212 for 2203. Fix bug in PSyIR fparser2 frontend when
DO WHILE contains normal DO loops.

170) PR 2220 for 2219. Adds 'shared_with' argument to the
node.ancestor() method.

171) PR 2174 for 2171. Add support for obtaining the partial datatype
of an UnknownFortranType.

172) PR 2163 for 1537. Support array-slicing notation in SymPy
comparisons.

173) PR 2221 for 2214. Fix names of invokes containing a single
kernel in the PSyIR of the LFRic Alg layer.

174) PR 2225 for 2224. Fix erroneous CI link check error by
omitting test for the particular link.

175) PR 2172 for 1833. Fixes the LFRic tutorials so that they
build correctly.

176) PR 2227 for 2226. Adds new Node.path_from(ancestor) method.

177) PR 2158 for 81. Ensures all example/test Fortran code for
LFRic follows the LFRic naming convention.

178) PR 2218 towards 2132. Adds LFRic integration tests and
new, associated optimisation scripts. Includes bug fixes for
matmul inlining transformation.

179) PR 2230 for 2228. Improve reporting of errors due to kernel
functors not explicitly included in algorithm use statements.

180) PR 2207 for 1419. Split the DataSymbol constant_value attribute
into is_constant (bool) and initial_value (PSyIR Node). This allows
parsing Fortran declarations with initial_value that are not constant.

181) PR 2231 for 2213. The Fortran frontend and backend now also
consider that UnresolvedInterface symbols can come from the body of
a Fortran Interface.

182) PR 2240 for 2234. Fix WhileLoop issue in the NEMO OpenACC kernels
script.

183) PR 2182 for 2179. Fix LFRic eg14 nvfortran compilation and add
nvfortran examples and tutorials steps in the Integration tests.

184) PR 2250 for 2248 and 1575. Fixes bug in line-length limiter
to prevent it breaking a line before the first non-whitepsace
character.

185) PR 2262 towards 446. Implement reference_access for Call nodes.

186) PR 2184 for 2166. Adds Sympy support for user-defined types.

187) PR 2270 for 1575. Fixes the line-length limiter for code that
has an indent greater than the max. line length.

188) PR 2259 for 1932. Adds support for the 'gang' and 'vector'
clauses on OpenACC Loop directives.

189) PR 2276 for 2274. Small fixes for various complaints
produced by latest version of pycodestyle.

190) PR 2291 for 2290. Bug fix to KernelModuleInlineTrans -
ensures that the new RoutineSymbol added to the Container is given
a DefaultModuleInterface.

191) PR 2238 for 2234. Adds support for a generic interface to
perform variable comparison when the datatype is unknown. (Required
for canonicalising SELECT CASE constructs.)

192) PR 2292 for 2288. Workaround for Sphinx-doctest bug by
building html dev guide before running the doctests.

193) PR 2260 for 2245. Splits LFRicLoopBounds class from
dynamo0.3.py.

194 PR 2241 for 2215. Adds support for Fortran names being the
same as Python keywords when using sympy within PSyclone, e.g. in
comparisons between expressions.

195) PR 2295 for 2294. Extends the PSyData extraction library
to support character variables

196) PR 2157 for 1396. Add tree-update mechanism and new ACCClause
nodes for data movement.

197) PR 2281 for 2258. Adds a PSyData wrapper for the TAU profiler.

198) PR 2283 for 2282 and 2286. Adds a get_ubound_expression
method to ArrayMixin (analagous to get_lbound_expression).

199) PR 2293 for 2301. Add 'is_independent' property/query to Loop.

200) PR 2309 for 1558. Add support for out-of-order parameter statements.

201) PR 2148 towards 2105. Adds {Min,Max}Val2Code transformations.

202) PR 2298 for 1987. Change all intrinsic Operations to IntrinsicCalls.

203) PR 2320 for 2242. Pin Sphinx dependency to <7 to fix RTD building step.

204) PR 2264 for 2263. Split LFRicScalarArgs from src/psyclone/dynamo0p3.py.

205) PR 2328 for 2316. Update PSyclone to use 0.1.3 of fparser.

206) PR 2329 towards 2204 and closes 2315. Bug fix to fparser2
frontend to ensure that a PROGRAM with a CONTAINS is captured as
a CodeBlock.

207) PR 2327 towards 2132. Updates the LFRic integration tests
to use a Spack environment and the latest HEAD of trunk of LFRic.
Also extends the integration tests to upload performance numbers
to a GitHub gist.

208) PR 2154 for 95 and 994. Enforce valid Fortran names for
invoke names in the LFRic API.

209) PR 2332 for 2318. Small bug fix to the LFRic extraction
driver creation. eg17/full_example_extract now builds and runs OK.

210) PR 2287 for 2253. Allow for GH_WRITE access to continuous
field arguments to inter-grid kernels in the LFRic API.

211) PR 2299 for 2297. Add option to get original symbol name
(for an imported symbol) in VariablesAccessInfo.

212) PR 2233 for 1772. Correct kernel metadata for LFRic adjoint code.

213) PR 2334. Fix missing backtick in docstrings.

214) PR 2306 for 2305. Rename DynHaloExchange to LFRicHaloExchange.

2.3.1

1) PR 1747 for 1720. Adds support for If blocks to PSyAD.

2) PR 1669 for 450. Remove set_dirty/clean from ACC regions

3) PR 1745 towards 1731. Split PSyLoop class from Loop node.

4) PR 1761 for 1760. Create release 2.3.1

2.3.0

1) PR 1672. Fixes BOZ literal standard incompatibility in the
nvidia profiling wrapper code.

2) PR 1670 for 1650. Fixes various inconsistencies in the symbol
table implementation.

3) PR 1674 for 1644. Fixes bug in matmul transformation.

4) PR 1673 for 1671. Fixes an error in the Makefile for the
'time evolution' LFRic tutorial.

5) PR 1628 for 1491. Extends PSyAD pre-processing phase to
expand any expressions involving active variables.

6) PR 1666 towards 1618. Modified prototype PSyIR-based
algorithm generation to use a transformation to convert from
invoke's to processed algorithm code, rather than it being done as
part of lowering in the backend. This allows algorithm code with
invoke's to be output by the backend.

7) PR 1613 for 1238 and 1528. Improves the view() method so that
it returns a str rather than printing to stdout. Also allows colour
to be disabled.

8) PR 1656 for 1649 and 1645. Add equality operator to all core
PSyIR nodes in order to compare nodes by value.

9) PR 1680. Refactors some of the code in various ACC directives to
minimise duplication and switch to f-strings.

10) PR 1639 for 1630. Add support for named arguments in Call and
Operation PSyIR nodes, including Fortran front-end and backend support.

11) PR 1682 for 1632. Extend the LFRic API to support transport
field type. Required for mixed-precision support.

12) PR 1678 for 1667. Work towards getting the LFRic OpenACC
example (eg14) to compile.

13) PR 1676 for 1644 Extend matmul2code transformation to
support matrix matrix multiplication. Previously it was limited to
matrix vector.

14) PR 1697 for 1695. Small update to LFRic stub infrastructure to
fix compilation failure when building tutorial code.

15) PR 1699. Fix failing dynamopsy test by specifying dm=true
explicitly

16) PR 1684 for 1683. Adds support for MIN and MAX LFRic Built-ins.

17) PR 1702 for 1695. Correction to LFRic infrastructure ('emdi') to
bring up-to-date with current LFRic usage.

18) PR 1705. Corrections for the NEMO tutorial.

19) PR 1692 for 1688. Prevents scoping regions from sharing symbol
tables. Adds attach() and detach() methods to SymbolTable for
managing this connection.

20) PR 1703 for 1689. Fix stencil depth bug in LFRic halo exchange
when a discontinuous writer follows a discontinuous stencil reader.

21) PR 1608 towards 1542. Allow GH_WRITE access for fields on
continuous function spaces in LFRic API.

22) PR 1722. Changes all PSyIR code over to using f-strings.

23) PR 1725. Allows parsing an empty Fortran file.

24) PR 1716 for 1713. Fix bug in matmul transformation.

25) PR 1693 for 1661. Improve dependency analysis tools.

26) PR 1347 for 1730. The Fortran backend now generates declarations with
dependencies in the appropriate order.

27) PR 1729. Minor fixes for MarkDown link checker and path to
test file.

28) PR 1733 for 1707. Update PSyclone master to the latest version of
fparser to enable running of PSyclone tests.

29) PR 1679. Add a limit parameter to the PSyIR node ancestor method.

30) PR 1749 for 1748. Updates version of fparser specified in setup.py
to 0.0.15.

31) PR 1740 for 1738. Update the operator implementation in the
cut-down LFRic infrastructure and change the USE statements generated
for CMA operators.

2.2.0

1) PR 1439 for 1074. Adds a GOcean example for the use of the NaN-
checking functionality (in PSyData).

2) PR 1463 for 1461. VALID_LOOP_TYPES constant made consistent
across APIs to permit check on loop type in dependency tools.

3) PR 1473 for 1423. Adds the ChunkLoopTrans PSyIR transformation.

4) PR 1475 for 595. Remove memento and transformation return values.

5) PR 1470 for 1459. Refactor OMPLoopTrans to support OMPLoop
directive and add OMPTargetTrans.

6) PR 1452 for 1451. Add doctest for the Dev Guide to GitHub Actions
and tidy the examples so that they work.

7) PR 1503 for 1502. Fix incorrect path in tutorial README.

8) PR 1489 for 1488. Configure MD link checker to skip links to MO wiki.

9) PR 1501 for 1484. Remove Python2 validation, update
documentation, start removing Python2-specific code and start
using any pylint-suggested Python3-specific code constructs.

10) PR 1476 for 1456. Fix precision problems in the PSyAD harness
code generation and add harness documentation.

11) PR 1482 for 1481. Renames symbol_from_tag->find_or_create_tag
and tidies its use.

12) PR 1521 for 1193. Update Python 3.5 to 3.6 in the GitHubActions CI.

13) PR 1512 for 1511 and 1516. Fix silent compilation test failures,
and make sure all files are compiled in tmpdir.

14) PR 1531. Fixes incorrect imports of OMPTaskwaitTrans in examples
in class docstrings.

15) PR 1498 for 533. Adds the use of SymPy for comparing expressions
for equality. Removes math_equal() and
ArrayRange2LoopTrans.string_compare() methods.

16) PR 1492 for 1457. Adds support for the transformation of Loops
when taking the adjoint of a code.

17) PR 1520 towards 1504. The Fortran frontend marks class type
definitions as UnknownFortranType in the PSyIR.

18) PR 1522 for 1519. Make the LoopSwapTransformation generic and
move it to the psyir.transformations module.

19) PR 1539 for 1524. Re-enable a previously deleted compilation test
due to a compilation error now fixed.

20) PR 1535 for 1534. Adds testing of Python 3.10 in GHA and
updates PSyclone to work with 3.10. Also makes GHA build examples
with 2 threads (as 2 cores are available) and runs tests with as
many threads as there are cores available (again 2 at this time).

21) PR 1510 for 1499. Add SymbolTable method to resolve the properties
of imported symbols.

22) PR 1485 for 1429. Create correct variable intents for
generated adjoint kernel code.

23) PR 1228 towards 753. The GOcean API now uses PSyIR for the Algorithm
layer.

24) PR 1526 for 1430. Fixes and improves support for array
ranges in psyad.

25) PR 1500 for 1487. Improvements to NEMO arrayrange2loop
transformation.

26) PR 1541 for 1513. Adds a 2D loop-tiling transformation.

27) PR 1533 for 1523. Adds SymPy symbols for Fortran names
in the tools.symbolic_maths module.

28) PR 1579 for 1550. Removes duplicated use statements produced
by the Fortran backend.

29) PR 1518 for 1506. Bugfix for WHEREs involving derived types.

30) PR 1578 for 1517. Uses dependency analysis to check for
loop-carried dependencies when attempting to parallelise a loop.
Also improves validation checks at code-generation time to ensure
that any OMP Loop directive is within a Target or Parallel region.

31) PR 1598 towards 282. Removes reference to the Dynamo 0.1 API
in the documentation.

32) PR 1462 for 451. Make LFRic loop bounds constant within the
PSy-layer with any function calls or structure accesses looking up
bounds information being computed separately beforehand. This can
help compilers correctly compile the code, particularly when there
are directives and may also help compilers produce more efficient
code.

33) PR 1592 for 1585. Add a PSyIR clause node and start implementing
clauses for the OpenMP directives.

34) PR 1599 for 282. Removes Dynamo 0.1 API code and tests (removes
the API completely).

35) PR 1556 for 1490. Adds a dotproduct2code transformation and
extends PSyAD to make use of it.

36) PR 1597 towards 753. Fixes naming bugs in GOcean Algorithm
PSyIR.

37) PR 1565 for 1505. Fix bug with UnknownFortranTypes inside other
fparser frontend declarations.

38) PR 1603 for 1566. Fparser reader parses derived types with
contains statements as UnknownFortranType.

39) PR 1602 towards 753. A new PSyclone script entry point (the
trans_alg function) can be used to transform the Alg-layer (currently
just for the gocean API).

40) PR 1601 for 1600. Removes the GOcean 0.1 API.

41) PR 1410 for 1398. Add Sphinx docs link checking in the CI.

42) PR 1586 for 1559. Adds support for SoA and AoSoA in the
Range2Loop transformation.

43) PR 1574 towards 1555. Replaces gen_kernel_stub script with
psyclone-kern. This more generic script can be extended to other
kernel modification options in the future (in particular
generating an algorithm layer from a kernel).

44) PR 1607 for 1559. Transform MATRIX_MULTIPLY to equivalent
code before creating adjoint.

45) PR 1527 towards 1525. Adds lower_to_language_level methods
to all LFRic builtins with the exception of those involving
reductions or type casting.

50) PR 1616 for 1615. Fixes list of files to profile in NEMO
kernels script plus some other typos.

51) PR 1621 for 1581. Extends PSyAD to make use of the
ArrayRange2Loop transformation to remove any array ranges before
constructing the adjoint.

52) PR 1622 towards 1618. Fixes code generation for PSyIR of
Algorithm Layer by removing `invoke` symbol during lowering.

53) PR 1609 for 1584, 1041 and 490. Adds transformation to
add OpenMP target directive to routines and updates existing
one for OpenACC to use PSyIR instead of parse tree.

54) PR 1625 for 1606. Fixes bug in PSyAD by ensuring that all
local, active variables are initialised to zero.

55) PR 1349 for 1277. Extend the LFRic API to use algorithm
precision/types when generating the PSy layer. Required for
mixed-precision support.

56) PR 1624 towards 1618. Bug fix for LFRic algorithm PSyIR module
and subroutine names.

57) PR 1637 for 1634. Add HoistLocalArraysTrans transformation.

58) PR 1553 for 1134. Completes the movement of OpenCL-generation
into its own transformation.

59) PR 1657 for 1640. Changes ready for new 2.2 release.

2.1.0

1) PR 1183 for 1075. Improves (tightens) the checking performed
by the LoopFusion transformation.

2) PR 1197 for 1189. Changes the dependence analysis to use a
Signature rather than just the symbol name (in preparation for
supporting derived types/structures).

3) PR 1216 for 1188. Adds a FortranReader PSyIR frontend.

4) PR 1217 towards 1210. Adds raising transformations for NEMO.

5) PR 1222 for 1171. Adds a new class to encapsulate all constants
related to the LFRic API.

6) PR 1233 for 1231. Adds psyadd driver script that will process an
LFRic tangent-linear kernel and produce its adjoint.

7) PR 1124 for 1185. Refactor PSyDataNode class and sub-classes.

8) PR 1229 for 1170. Adds a Container parent node above all
InvokeSchedule nodes.

9) PR 1225 towards 1223. Moves remaining GOcean constants into
new GOceanConstants class.

10) PR 1241 for 1240. Adds support for functions in the PSyIR and
Fortran frontend and backend.

11) PR 1257 for 1248. Adds support for logical, read-only, scalar
arguments to LFRic user-supplied kernels.

12) PR 1234 for 1230. Adds FileContainer node.

13) PR 1264 towards 1258. Adds mappings for the LFRic infrastructure
types to their Fortran modules to the LFRic Constants class.

14) PR 1236 for 1028. Extends the core variable-access analysis
functionality to support structures (derived types).

15) PR 1239 towards 1237. Adds lower_to_language_level() method
for some LFRic builtins.

16) PR 1195 for 1194. Fixes some incorrect str(error) usage in the
tests, introduces a PSycloneError base class and adds tests to make
sure that it is used. Also adds tests to ensure that future accidental
use of str(error) will cause a failure.

17) 1243 for 1242. Bug fix for OpenCL code generation - ensures
synchronisation calls are added where necessary if kernels are running
on different command queues.

18) 1273 for 1272. Fixes missing fparser initialisation when
GOcean loop bounds are read from config file.

19) 1287 towards 1259. Rename TypeSymbol to DataTypeSymbol.

20) 1265 for 1260. Fixes various bugs to better support PSyIR
code generation. Includes function return values and string
storage in PSyIR.

21) 1293 for 1178, 1179, 1285. Update installation instructions
to include autoapi and tex-gyre, and added allclean target to
reference guide to clean up all automatically created files.

22) 1278 for 1271. Updates dependency tools to use Signatures.

23) 1286 for 1274. Updates the Visitors so that they perform
any necessary lowering and do so on a *copy* of the PSyIR tree
so that there are no side effects.

24) 1290 for 2183. Adds support for != and other comparison
operators to the Signature class.

25) 1262 for 920. Adds capturing of algorithm-layer datatypes
which are then stored in the algorithm.py Arg class.

26) 1252 for 1251. Fix Ranges inside StructureType accesses.

27) 1294 towards 1259. Add the TypedSymbol abstract class.

28) 1311 for 1303. Fortran frontend do not merge CodeBlocks
when these are not full statements.

29) 1212 towards 1010. Updates the gocean1.0 API so that the PSy-layer
generation uses the PSyIR Fortran backend. (N.B. the OpenCL generation
still uses the f2pygen mechanism for the moment.)

30) 1316 for 1301 and 1304. The Fortran frontend handles labelled
and named constructs.

31) 1299 for 1249. Some LFRic built-ins use the PSyIR backend, which
fixes a unary operator precedence bug.

32) 1279 for 1250. Adds capability to specify multiple kernel
directories.

33) 1329 for 1308. Fix bug in the Fortran frontend WHERE clause.

34) PR 1327 towards 1208. Moves the implementations of the various
Directive nodes out of psyGen.py and into psyir/nodes.

35) 1255 for 1253. Improve the parsing of Fortran specification
code and includes support for Fortran interface blocks.

36) 1319 for 1307. Add support for lower bounds in PSyIR ArrayType.

37) 1261 towards 1277. Gather more information in LFRicConstants
so values are not hardcoded in multiple locations. Includes adding
precision information derived from LFRic rules which is required
for mixed precision support.

38) PR 1317 for 1315. Fixes bug in dependence analysis caused by
introduction of FileContainer root node.

39) PR 1340 for 1334. Add support for symbols in
'psyir_from_expression()' and fix code generation bug for LFRic
"power" built-ins with literal constants that have explicit precision.

40) PR 1323 for 1305. Capture the default visibility of a Fortran
module and store it in the symbol table.

41) PR 1313 for 1268 and 1269. Adds new ComponentIndices class
to manage indices for component accesses.

42) PR 1325 for 1247. Adds PSyIR support for comments (associated with
Container, Routine and Statement nodes).

43) PR 1342 towards 1338. Adds the OMPSingleTrans transformation for
creating an OMP SINGLE region.

44) PR 1352 towards 1338. Adds the OMPMasterTrans transformation for
creating an OMP MASTER region.

45) PR 1360 for 1359. Fix pytest fixtures tear downs.

46) PR 1353 for 1324. Add support for generating structure accesses in
the C backends.

47) PR 1358 towards 1338. Add the OpenMP Taskloop directive and its
corresponding insertion transformation.

48) PR 1369 for 1367. GOcean supports REAL literals in kernel arguments.

49) PR 1362 for 1361. Fix bug in PSyIRGen when PSyIR node corresponds
to more than one fparser2 node.

50) PR 1344 for 1309. Fix bug in PSyIR backend name comparison.

51) PR 1372 for 1371. Bring tutorial notebooks up-to-date and add
them to the CI.

52) PR 1341 towards 1134. Move OpenCL transformation to GOcean
transformations folder and rename.

53) PR 1368 towards 1338. Adds OMPTaskWaitDirective node.

54) PR 1282 for 871. Adds generation of callback routines for
GOcean in order to do data movement with OpenACC.

55) PR 1267 for 1232. Adds a TL to Adjoint transformation for
assignments.

56) PR 1263 for 1139. Adds a transformation that converts an
array access into a single-trip loop.

57) PR 1378 for 879. Renames the Symbol interface GlobalInterface
to ImportInterface.

58) PR 1376 for 1374. Create intermediate RegionDirective and
StandaloneDirective PSyIR node classes.

59) PR 1380 for 1375. Add the LazyString utility to prevent generating
costly error messages when these are not used.

60) PR 1354 for 1256. Change GOConstLoopBoundsTrans to modify the
tree rather than just setting a flag.

61) PR 1343 for 1336. Use github actions to verify all links in
all markdown files.

62) PR 1385 towards 430 and 737. Improve accessibility attribute support
on the PSyIR Fortran frontend and backend.

63) PR 1363 for 1356. Adds a hoist transformation for assignments.

64) PR 1330 for 1297. Adds TL to Adjoint test harness code
generation.

65) PR 1379 towards 1288. Alters the driver generation for
GOcean kernel extraction to use the PSyIR.

66) PR 1403. Adds support for private clause for declarations in f2pygen.

67) PR 1406 for 1404. Temporary copy() bug fix while the loop variable
is not part of the PSyIR tree.

68) PR 1407 towards 1383. Standardises the node_str() method of
DirectiveNode and remove un-needed code.

69) PR 1401 for 1400. Extend psyad script to allow list of active
variables to be specified.

70) PR 1326 for 1292. Add support for GH_READINC access for continuous
fields in the LFRic API.

71) PR 1409 for 1383. Standardises and cleans-up dag_name() methods
and pins jsonschema to version 3.0.2 to fix jupyter notebooks with
older versions of Python.

72) PR 1147 for 430, 435 and 616. The NEMO API now uses the PSyIR
backend to generate output code.

73) PR 1395 for 1100. Replaces the first two LFRic examples with new
ones that use the 'dynamo0.3'/'lfric' domain instead of 'dynamo0.1'.
This is a step towards removing the 'dynamo0.1' domain.

74) PR 1397 for 1390. Add support for unary minus in SIR backend.

75) PR 1413 towards 1134. Moves the generation of some OpenCL
support routines from the generation stage to the transformation
stage.

76) PR 1420 for 1113. Completes the symbol-specialisation
functionality by adding support for attributes.

77) PR 1435 for 1425. Adds LFRic BuiltIns for subtraction of
field elements from a scalar.

78) PR 1412 for 1411. Adds visitor to PSyAD script and have it
call assignment transformation.

79) PR 1433 for 1378. Adds dependence checks to the hoist
transformation.

80) PR 1450 for 1291. Adds new dependence-analysis chapter to UG to
bring together documentation on 'old' and 'new' way of doing things.

81) PR 1436 for 1434. Adds new Max2Code transformation.

82) PR 1427 for 1405. Adds new PSyIR nodes for OMPTarget and
OMPLoop directives.

83) PR 1466 for 1465. Update SIR backend so that generated code
specifies cartesian grid (to match latest Dawn API).

84) PR 1469 for 1468. Update deprecated 'operatorPrecedence' to
'infixNotation' in 'src/psyclone/expression.py' for compatibility
with the pyparsing 3.01 update in GitHub.

85) PR 1455 for 1441. Extends PSyAD to cope with kernels
containing multiple assignment statements.

86) PR 1432 for 1168. Adds PSyIR lowering support for generic
PSyData nodes.

87) PR 1415 towards 1338. Adds the OMPTaskwaitTrans transformation
that resolves dependencies between task loops.

88) PR 1460 for 1454. Fix code generation to pass the number of
cells up to the last edge cell instead of the halo cells to the
'domain' kernels in the LFRic API.

89) PR 1438 towards 1134. Moves the creation of the OpenCL
set_args routines into the transformation.

90) PR 1480 for 1479 Makes PSyclone use the release version of
fparser (0.0.13) from pypi on installation (towards making a new
PSyclone release).

2.0.0

1) 778 for 713. Use 'make' to execute all examples.

2) 782 for 780. Refactor FunctionSpace support and move it
out of dynamo0p3.py and into the lfric domain.

3) 785 for 679. Use a DataSymbol to represent the PSyIR Loop variable.

4) 795 for 793. Add the scope property to PSyIR node.

5) 779 for 763. Capture unrecognised declarations in a new
PSyIR UnknownType DataType.

6) 787 for 786. Introduce the PSyIR Call node and the RoutineSymbol.

7) 784 for 764. Update LFRic test kernels to use fs_continuity_mod.

8) 797 for 790. Add intrinsic type information to GOcean grid
properties in config file. Add OpenCL to GOcean/eg1 ('shallow').

9) 792 for 789. Return kernel argument objects instead of just names
from unique_declarations() and unique_declarations_by_intent().

10) 750 for 575. Add support for jupyter notebooks with links to
binder for some examples.

11) 804 for 801. Correct Fortran intents for invoke arguments in
unique_declns_by_intent().

12) 794 for 788. Re-structuring and tidying of DynArgDescriptor03
to become LFRicArgDescriptor.

13) 807 for 805. Put fparser2 bare DO constructs inside CodeBlocks.

14) 816 for 810 (fix GOcean examples to build dl_esm_inf if
required) and 730 (bring GOcean/eg5 up-to-date with latest dl_timer).

15) 811 for 783. Removes potential duplication of orientation
pointer declarations.

16) 808 for 800. Adds support in the PSyIR for the case when a
variable used to dimension an array has deferred or unknown type.

17) 822 for 820. Excludes return statements from profile and
directive regions. Also reworks the relevant code to exclude nodes
rather than include them which makes more sense as exclusion is
the exception.

18) 796 for 412. Adds a transformation to convert an assignment
to an array range into an explicit loop in the PSyIR.

19) 834 for 833. Adds the NINT intrinsic to the PSyIR and adds
support in fparser2reader for translating Fortran NINT into this
intrinsic.

20) 821 for 630. Extends symbol table functionality to allow
search of ancestor symbol tables.

21) 837 for 824. Introduce profile_PSyDataStart() and
profile_PSyDataStop() functions for NVTX profiling on NVIDIA.

22) 818 for 138. Modifies PSyclone tests which use GH_WRITE for
continuous fields when iterating over cells (as this is not
valid).

23) 842 for 841. Fixes gocean/eg1 so that PSYCLONE_CONFIG is
set correctly (and adds a .gitignore).

24) 825 for 646. Extends the dependency analysis so that it
works for all 'implicit' arguments passed to LFRic kernels.

25) 799 for 757. Extends kernel metadata such that multiple
implementations (in different precisions) of a single kernel
may now be specified through an interface block.

26) 854 for 848. Adds a tutorial in the form of Jupyter
notebooks. Covers fparser2, the NEMO API and PSyIR navigation.

27) 839 for 836. Improves the separation between the metadata
parsing and type information in the LFRic API.

28) 862 for 860. Fixes error when building documentation using
windows filesystems (removes symbolic links).

29) 812 towards 199. Adds PSyclone support for read-only
verification for LFRic and GOcean.

30) 829 for 827. Removes the NemoImplicitLoop node and the
associated NemoExplicitLoopTrans (now that the PSyIR has support
for assignments to array ranges).

31) 844 for 809. Improves PSyclone linelength support by
allowing linelength checks to be applied to modified or generated
code but not input code. The various options can be controlled by
command line switches.

32) 882 for 881. Removes specific version of pylint in setup.py.

33) 884 for 883. Restructure psyclone user guide to move
psyclone command section nearer the front of the document.

34) 823 for 471. Updates the access from INC to READWRITE for
those kernels that loop over DoFs.

35) 872 for 736 and 858. Routine Symbols are captured by the Fortran
front-end when parsing a Container.

36) 850 for 849 - basic support for distributed memory in GOcean.
N.B. dl_esm_inf does not yet have support for set_dirty/clean.

37) 875 for 774. Add support for new metadata format for scalar
arguments to LFRic kernels - sepecify the intrinsic type
separately.

38) 895 towards 871. Updates to HEAD of dl_esm_inf, introduces
FortCL as a submodule and alters the OpenCL code generation for gocean
in order to create a read_from_device function.

39) 865 for 832. Use Jinja to generate Fortran code for the
PSyData read-only verification library plus the dl_esm_inf
implementation of this.

40) 893 towards 866. Introduce support for "operates_on" instead of
"iterates_over" in LFRic kernel metadata.

41) 887 for 876. Create a generic symbol when no better information is
provided about a symbol and replace the symbol later on if more
information is found.

42) 904 for 903. Fixed an error in handling use statements (a
symbol clash when there should not be one).

43) 877 for 867. Bug fix to enable dependencies on HaloExchange
objects to be ignored while updating the dependency information.

44) 907 for 906. Refactor PSyDataTrans and subclasses to reduce
code duplication (especially in the __str__ and name methods).

45) 902 for 866. Update (virtually) all LFRic test kernels and
examples to use "operates_on" instead of "iterates_over" metadata.

46) 914 for 897. Update Coding Style in Dev guide with details
on raising Exceptions.

47) 878 for 832. Use Jinja and the PSyDataBase class for building
most of the PSyData profiling wrapper libraries.

48) 915 for 908. Alters the module generation for the LFRic PSy
layer so that use statements for LFRic field and operator modules are
only generated if required.

49) 922 for 921. Fixes pycodestyle errors in the code base.

50) 899 for 896. Adds a new PSyIR Routine Node that subclasses
Schedule and is subclassed by KernelSchedule.

51) 932 for 931. Fixes the dependency analysis in the case
that no existing Symbol is found for an array access. This is
a workaround until the NEMO API has a fully-functioning symbol
table enabling the dependency analysis to be based upon Symbol
information (845).

52) 930 for 885. Bug fix for missing halo exchange before a
Builtin Kernel with a field argument with read-write access.

53) 919 for 916. Fixes errors in docstrings which show up when
generating the reference guide.

54) 938 for 937. Correct erroneous use of str(err) instead of
str(err.value) in symboltable_test.py.

55) 940 for 939. Bug fix to ensure utf-8 encoding is set in both
Python 2 and 3 when reading files. (Required when running in
non-Unicode locales.)

56) 942 for 941. Bug fix so that an exception is raised if a
directive is placed around a loop or code region containing a
codeblock.

57) 912 for 781. Adds support for '2D cross' stencils (i.e.
cross stencils where the directions of the arms is encoded
and their lengths may vary).

58) 956 towards 955. Changes the directory structure for
the dl_esm_inf netcdf PSyData wrapper library.

59) 954 for 745. Update PSyclone copy of the LFRic infrastructure
to create compilable and runnable LFRic examples.

60) 943 for 923. Adds generation of an in-kernel boundary mask
when generating OpenCL kernels for GOcean. (Fixes failures seen
for arbitrary problem sizes.)

61) 911 for 363. Add support for derived/structure types.

62) 953 for 952. Make RegionTrans and its subclasses accept a
node as input as well as a list of nodes.

63) PR 965. Add github actions for CI - runs flake8, pytest,
codecov and examples for Python 2.7, 3.5 and 3.8.

64) PR 975 for 972 - correct use of str(err) with str(err.value)
in a couple of recently-added tests.

65) PR 983 for 982 - Improve 'kernels' auto-profiling for NEMO API.

66) PR 977 for 976. Fix dimension parameter for Jinja templates
in the PSyData libraries.

67) PR 981 for 980. Move jupyter notebooks into a notebooks
subfolder of the tutorial directory ready for the addition of
"practicals" tutorials

68) PR 958 for 957. Add checks that raise an exception at code
generation time if there are any orphan OpenACC or OpenMP
directives e.g. OpenMP loop should be within OpenMP parallel.

69) PR 970 for 955. Use Jinja to generate the netcdf extraction
library for the GOcean API.

70) PR 986 for 819. Adds support for NetCDF data extraction
for the LFRic API.

71) PR 964 for 933. Adds nemo practical 'hands-on' tutorial
documentation and examples.

72) PR 905 for 989. Adds PSyData wrapper libraries for dl_esm_inf
and LFRic that provide NAN/infinity checking for real inputs/outputs
to a kernel. Also adds the NanTestNode and a NanTestTrans (which
inserts an instance of the former).

73) PR 961 for 936. Add hands-on tutorial for distributed memory
with the LFRic API.

74) PR 985 for 979. Hands-on tutorial for single-node optimisations
with the LFRic API.

75) PR 962 for 952. Hands-on tutorial for building an LFRic
application.

76) PR 995 for 971. Hands-on tutorial for using PSyData
functionality with the LFRic API.

77) PR 1000 for 988. Add missing dependencies in gungho_lib/Makefile
in LFRic building_code tutorials 3 and 4.

78) PR 1012 for 1001. Adds a wrapper script to find a Python
executable when building any of the PSyData wrapper libraries. (Required
because some distributions now only ship with 'python3').

79) PR 947 for 946. Array shape elements are DataNodes (References,
Literals or expressions). If an int is provided, it is transformed to
a Literal.

80) PR 1020 towards 363. Rename the PSyIR node Array to ArrayReference.

81) PR 1011 for 1008. Auto kernel profiling can fail after OpenMP
transformations.

82) PR 951 for 950. Adds f2pygen support for generating code from
PSyIR nodes.

83) PR 1026 for 1025. Removes code associated with, and
reference to, travis as we have migrated to github actions.

84) PR 944 towards 925. Added metadata support and constraints
tests for operates_on=domain kernels.

85) PR 901 towards 873. Adds PSyIR support for recognised quantities
in LFRic kernels. Currently only used for argument validation.

86) PR 1034 for 1037. Final fixes for problems found when
running with LOCALE=C.

87) PR 974 for 974. Support skip ci with GitHub Actions.

88) PR 1021 towards 363. Add PSyIR nodes for structure references and
its accessors, also the associated Fortran back-end visitors.

89) PR 1036 for 1033. Fix bug in coluring adjacent_face array with
OpenMP in LFRic API.

90) PR 1023 for 1017. Update and improve PSyData LFRic tutorial.

91) PR 894 towards 817. Adds support for LFRic kernel metadata
specifying the intrinsic type (real and integer) of fields and
operators.

92) PR 1029 towards 1010. Sets up initial API and examples for
generating PSy-layer code using the PSyIR backends.

93) PR 1032 for 1019. Adds OpenCL configuration parameters to
enable profiling and out-of-order execution of kernels. Also adds
an 'OpenCL devices per node' configuration option.

94) PR 1044 towards 817. Updates the metadata in LFRic test
kernels to specify the type of field and operator arguments.

95) PR 1038 for 999. Changes to the PSyData wrapper libraries
so that they build with Intel. (Ensures that generic interfaces
to various routines are declared in the correct locations.)

96) PR 1024 for 843. Implements the ArrayRange2LoopTrans for
the NEMO API.

97) PR 1045 towards 817. Updates the LFRic kernel metadata
in the examples to specify the type of field and operator args.

98) PR 1042 for 1039. Adds new method to SymbolTable that
supports the creation of symbols of particular types.

99) PR 1053 towards 363. Add frontend support and semantic navigation
methods for PSyIR structures.

100) PR 1060 (and 1046) for 194. Enables the support for region
stencils in LFRic.

101) PR 1071 for 1069. Modifies the regex used in a couple of
tests in order to reduce run-time.

102) PR 1068 for 1064. Updates to latest fparser and fixes
parsing of invokes now that some kernel calls are identified
as structure constructors instead of array accesses.

103) PR 1051 towards 817. Add field and operator data type
to kernel metadata in the LFRic tutorials.

104) PR 1059 for 960. Removed LFRic support for orientation as
this is not required.

105) PR 1079 for 363. Complete the PSyIR structure support.

106) PR 1070 for 703. Add the ability to rename PSyIR symbols

107) PR 847 for 846. Adds support for the LFRic timer to the
PSyData profiling wrapper.

108) PR 1093 for 1088. Add fparser2reader support for Call statements.

109) PR 1084 for 1080. Introduces the use of PSyIR for GOcean
kernel arguments and loop limits.

110) PR 1052 for 817. Add LFRic field datatype metadata for fields
and operators in remaining test modules.

111) PR 1092 for 1091. Auto-invoke profiling does not include
Return nodes anymore.

112) PR 1087 for 1086. PSyIR Fortran backend for routines merges
symbol tables into single scope.

113) PR 1062 for 1037. Fix LFRic examples and tutorials to
compile and run with the Intel Fortran compiler.

114) PR 1054 for 1047. Adds check that the intrinsic types of
scalar arguments in the LFRic API are consistent. Extends argument-
filtering routines to additionally filter on intrinsic type.

115) PR 1102 towards 1031. Improves PSyIR fparser2 frontend support for
structures types.

116) PR 1111 for 1110. The Call create method is a classmethod.

117) PR 1121 for 1120. Introduce bibtex_bibfiles to Sphinx UG
and DG config files to fix latex build errors in the latest
version of Sphinx which were causing read the docs to fail to
build the documentation.

118) 1058 for 917. Updates the profiling example (gocean/eg5)
so that the appropriate wrapper library is automatically
compiled.

119) PR 1090. Adds support for LFRic builtins that accept integer-
valued fields.

120) PR 1105 for 1104. Adds support for program, module and subroutine
to Fparser2Reader

121) PR 1101 towards 1089. Remove check on arrays dimension symbols.

122) PR 1128 for 1127. Fix Sphinx-RTD builds of user and developer guides.

123) PR 1117 for 1003. Change intent for 'GH_WRITE' arguments from
'in' to 'inout' (because a kernel does not write to all data points in
a field).

124) PR 1063 towards 935. Add basic support for specialisation of
symbols.

125) PR 1073 for 1022. Updates the Makefiles for the examples
and tutorials to make them consistent. Default target for the tutorials
is now 'transform'.

126) PR 1095 for 1083. Adds a LoopTrans base class that Loop
transformations can subclass and use any common functionality.

127) PR 1138 for 1137. Add support for Fortran Program in the PSyIR.

128) PR 1122 for 1112. Restructures the way the colour to use
for a given PSyIR node is specified.

129) PR 1125 for 1114. Harmonises LFRic built-in and module names to
consistently use "LFRic" rather than "Dyn".

130) PR 1065 for 1061. Re-structures the GOcean PSyData examples.

131) PR 1141 for 1132. Small fix to ensure depth() returns correct
values for a GOcean kernel with 'pointwise' access.

132) PR 1096 for 1056. Add GOcean transformations to insert
boundary masks inside kernels and eliminate return statements.

133) PR 1109 for issue 402. Add NEMO processing scripts to the
repository.

134) PR 1135 for issue 1124. Add a replace_with method to PSyIR node.

135) PR 1126 for 1098. Add kernel stub generation support for the
'2D cross' stencils in the LFRic API.

136) PR 1145 for 1107. Adds new LFRic builtins (type-conversion,
SIGN, plus others).

137) PR 1133 for 1130. Uses GOcean stencil metadata to correctly
populate the field access information (dependency analysis) for a
GOcean kernel.

138) PR 1154 for 1153. Work towards improving usability of
loop fusion transformation. Moves transformations into separate
files in the appropriate directories.

139) PR 1155 for 529. Adds PSyIR support for REAL and INT
BinaryOperations.

140) PR 1144 for 1136. Add checks that PSyIR nodes are only children
of one parent.

141) PR 1150 for 1146. Fixed bug in PSyIR, making the name
matching in the Node swap method case insensitive.

142) PR 1166 for 1152. Adds support for the unary sum operator
in the PSyIR and the fparser2psyir reader.

143 PR 1131 for 1116. Make the number of any*space function
spaces (and basis supported datatypes) configurable.

144) PR 1082 for 925. Adds code generation support for
operates_on=domain kernels in LFRic.

145) PR 1162 for 1160. Add Fortran backend support for unresolved
interfaces when there is wildcard imports.

146) PR 1157 for 478. Updates the LoopFusion transformation so
that the 'same space' option is now provided with the options
dict, in line with the way other transformations work.

147) PR 1165 for 1164. Update PSyIR Assignment node
is_array_range test to work with structures.

148) PR 1072 for 1067. Re-structures the LFRic runnable examples.

149) PR 1177 for 1168. Adds lowering method for the ProfileNode node.

150) PR 1129 towards 753. Adds generic and LFRic Algorithm-Layer
PSyIR nodes and transformations.

151) PR 1191 for 1163. Rationalise config file list processing. This
PR breaks backward compatibility of config files.

152) PR 1169 for 294. Updates the various ChildrenList methods
so that the parent property of child nodes is automatically updated.

153) PR 1196 for 1106. Moves tests related to field and scalar
arguments to LFRic kernels into appropriate files.

154) PR 1186 for 1173. Reshapes mesh maps for LFRic inter-grid kernels.

155) PR 1205 for 870. Removes support for the old-style 'iterates_over'
metadata in LFRic API.

156) PR 1156 for 874. Removes support for old-style LFRic arg_type
descriptor. Primitive type of all kernel arguments must now be
specified.

157) PR 1182 for 1181. Add OpenACC directives support to the PSyIR
Fortran backend.

158) PR 1167 for 1097. Install PSyData wrapper libraries; support
integer fields in PSyData.

159) PR 1176 for 1174. Check that schedule is not empty when applying
profiling.

160) PR 1201 for 1198. Introduces the ScopingNode abstract base
class. Container, Schedule and Routine now subclass this and deep
copying is supported.

161) PR 1211 towards 1210. Add CreateNemoKernTrans transformation.

162) PR 1219 for 1218. Removes the Node.gen_code() abstract method
as this is not used by the new PSyIR nodes that we are adding.

163) PR 1192 towards 753. Add methods to lower the Algorithm layer PSyIR
and create the appropriate symbols to be used by the PSy-layer.

164) PR 1175 for 1066. Update the GOcean OpenCL read/write
interfaces and use so that only halo data moved to/from the host for
halo exchanges.

165) PR 1207 for 1184. Add a validation for the node global constraints
that is check once a node is visited by any of the Visitor classes.

166) PR 1226 towards 1151. Update fparser to 0.0.12 for the
PSyclone release 2.0.0.

167) Issue 1151. Release version 2.0.0 of PSyclone.

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.