-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathchangelog
More file actions
3978 lines (2660 loc) · 144 KB
/
changelog
File metadata and controls
3978 lines (2660 loc) · 144 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
11) PR #3414 for #3279. Update the lists of exclusions to improve GPU
performance for NEMO.
10) PR #3413 for #3411. Remove OpenMP SUB reduction operator and relpace
with ADD as is required by OpenMP 5.2.
9) PR #3406 for #3406. Fix issue with comment before a subroutine that
turns into a CodeBlock.
8) PR #3371 towards #3012. Add workaround to bypass psyclonefc fixed-from
issues.
7) PR #3374 for 3366. Removes LFRicSymbolTable.
6) PR #3369 towards #1658. Switches NEMO scripts to use all of the
supported reduction intrinsic expansion transformations.
5) PR #3377 for #2612. Add support for Fortran character length.
4) PR #3388 for #3334. Remove the functionality to write (and rename)
kernel files from the invoke. Now to modify kernels they must be inlinded
first or modified directy in their file (e.g. with lfric transmute pass).
3) PR #3351 towards #3083. Adds scaffolding for new Treesitter-based
frontend.
2) PR #3401 for #3400. Fixes a frontend issue causing issues with NEMO
master branch.
1) PR #3393 for #2917 and #2887 - updates test to show that symbols with
explicit precision in common blocks now work OK. Also corrects tutorial
text relating to dl-timer.
Release 3.3.0-rc1 9th April 2026
75) PR #3394. Added .NOT. support for sympy.
74) PR #3391 towards #3364. Update PSyclone to use fparser 0.2.2.
73) PR #3387. Update CI to use nvhpc 26.3.
72) PR #3382 towards #1570. Removes the unnecessary check on the precision
of a scalar used in a reduction in the LFRic API.
71) PR #3381. Update integration tests to LFRic_apps 3.1.1
70) PR #3358 for #1734, #2975 and #2949. Improve symbol table consistency
with better copies, validation checks and symbol localisation operations.
69) PR #3384 for #3383. Adds a pytest fixture to set the logging level
in fparser to CRITICAL. This simplifies the error messages produced
when a test fails.
68) PR #3378 towards #3252. Add a value_range_check example for LFRic.
67) PR #3380 for #3379. Fixes import for graphviz.Digraph.
66) PR #3359 for #3022. Uses the improved datatype functionality to
correctly transform reduction intrinsics into native code.
65) PR #3365 towards #2668. Updates more transformations to accept
keyword arguments instead of options.
64) PR #3376. Update CI to use character module versions to avoid fp
conversions.
63) PR #3372 for #3369. Extends NEMOv5 integration tests to do output
and compares the resulting files with KGOs.
62) PR #3363 towards #2971. Move MoveTrans into psyir.transformations.
61) PR #3336 for #3325. Improve datatype method to prevent returning
array Extents and select better operand type when possible.
60) PR #3357 for #1857. Re-names ArrayType.datatype to
ArrayType.elemental_type and precision and intrinsic properties.
59) PR #3353 for #3328. Fix a case of duplicated nodes returned by DUC.
58) PR #3354 for #2429. Extends the fparser2 frontend such that all
structure constructors and functions with unknown delcarations are
represented by Call nodes.
57) PR #3355 towards #3252. Improves PSY_VALUE_RANGE format, introduces a
generic value_range_check library and runs examples during the tests.
56) PR #3343 towards #1960 and #1799. Improves ArrayAssignment2Loop
by using call/RoutineSymbol datatype information.
55) PR #3333 for #2381 - Restructures global reduction nodes to support
LFRicGlobalMax/Min/Sum operations.
54) PR #3349 for #3347 - bug fix to prevent comments and directives
from being lost when on/in SELECT CASE blocks.
53) PR #3317 - adds a profiling wrapper libary for ROCTx (AMD) as
well as a new nemo example to show profiling with OMP offload.
52) PR #3342 for #3339 - adds a value_as_python property to Literal.
51) PR #3205 for #3306 and towards #3157. Initial implementation of
a generic MaximalRegionTrans and specialisations to create spanning
OMPParallel regions and NEMO Profiling regions.
50) PR #3338 for #1651. Fixes Reference2ArrayRange issues with
capitalisation and test nested WHEREs.
49) PR #3331 for #3291. Update docs for LFRic BUILTIN_MAP.
48) PR #3296 for #2951. Improves ArrayAssignment2LoopTrans to allow
for dependencies between LHS and RHS.
47) PR #3332 for #3143 - fixes bug in DependenceUseChain so that
previous access of a call argument does not return the call.
46) PR #3319 for #3318. Alters the logging set-up performed by PSyclone
so that it does not affect the root Python logger.
45) PR #3125 towards #3060. IntrinsicCall reference_accesses now returns
appropriate access_types (instead of a generic READWRITE).
44) PR #3301 towards #1646. Adds new DataNodeToTempTrans() that allows
an expression to be replaced with a temporary variable.
43) PR #3326 for #3323. Bug fix for comments before directives on
loops or if statements.
42) PR #3324 updates Intel OneAPI configuration in Integration Tests.
41) PR #3321 for #3320. Removes null integer arithmetic operations in the
frontend when no changes to the resultant code will occur.
40) PR #3316 for 3314. Fixes a bug where inline comments could break
the line length limit.
39) PR #3309 for #3281. Improves check in IncreaseRankLoopArraysTrans to
allow for inquiry intrinsics on a specified dim.
38) PR #3311 for #3310. Small optimisation to the dependence-analysis
functionality for array indices consisting of simple References.
37) PR #3295 for #3292. Add command-line flag to permit config-file
settings to be overridden and extend possible settings for the
runtime warnings option.
36) PR #3308. Update Spack environment to use updated compiler versions.
35) PR #3202. Update nvidia compiler module version.
34) PR #3307 for #3305. Fix default value instantiation that was loading
the configuration file at import-time.
33) PR #3145 for #1623. Adds extensive training material using both the
GOcean and LFRic APIs.
32) PR #3299 for #3297. Fix intermittent test failures by more consistent
use of str and Path in the ModuleManager.
31) PR #3101 for #1312. Implements support for ScalarArray arguments to
LFRic kernels.
30) PR #3280 towards #2971. Move OMPParallelTrans to psyir.transformations.
29) PR #3275 for #3216. Allows the specification of private variables
for parallel regions in user scripts and removes the option from Loops.
28) PR #3263 towards #2381 and #2674. Generalise GH_SUM to GH_REDUCTION
and begin support for new reduction LFRic Builtins.
27) PR #3293. Fixes various typos throughout the PSyclone codebase.
26) PR #3267 for #3265 and #1418. Improves the parsing of Fortran
derived types with unsupported components.
25) PR #3289 for #3288. Pin Sphinx to 8.3 to prevent doc build issues.
24) PR #3284 for #3283. Bug fix for case where same file found via
multiple search paths.
23) PR #3255 for #3251. Identify uncategorised directives as
UnknownDirective (instead of CodeBlock) when possible.
22) PR #3286 for #3207. Update the LFRic integration tests to use the git
repos.
21) PR #3264 for #3259. Shorten function_space names if they are above a
certain threshold. The Fortran backend checks for names that are too long.
20) PR #3119 towards #3060. Adds support for deducing the return types
of intrinsic calls.
19) PR #3278 for #3274. Move access_mapping from config file to constants.
18) PR #3266 for #1858. Adds support for derived-type accessors in
the Reference2ArrayRangeTrans transformation.
17) PR #3277 for #3276. Update copyright statements for 2026.
16) PR #3258 for #279. Removes Arguments.dofs and generally improves
testing coverage.
15) PR #3260 for #2884. Allow WHERE with imported symbols by changing
Ref2ArrayRangeTrans behaviour to do the validations.
14) PR #3254 for #3253. Fix openmp parallel lowering with kernels and
improve dependency messages
13) PR #3239 for #3199. Add OMPCritical Directive and Transformation.
12) PR #3226 for #514. Refactor LFRic reductions to use OMPReductionClause.
11) PR #3249 for #3246. Add the ArrayBounds.copy method.
10) PR #3221 towards #2884. Cleans-up Reference2ArrayRangeTrans.
9) PR #3235 for #3234 and #3232. Add support for OpenMP conditional
compilation statements.
8) PR #3152 for #3111. Ensure loop variables are excluded when
performing kernel extraction.
7) PR #3041 for #2823. Changes the frontend for existing code so
that unresolved symbols with parentheses are identified as calls
rather than array accesses.
6) PR #3223 for #3219. Add a prototype of the kernel computation
pattern as its children
5) PR #3150 towards #2302. Adds functionality to map arguments to
Fortran intrinsics to the corresponding named arguments.
4) PR #3178 for #3196. Improves fparser2 reader directive handling.
3) PR #3210 for #3203. Removes outstanding references to the old,
pared-down LFRic infrastructure.
2) PR #3164 for #1320. Refactors the AccessSequence.component_indices
property into a method to remove internal state.
1) PR #3218 for #2705. Adds explicit type information for the r2d_field
type in GOcean so that kernel inlining succeeds.
Release 3.2.2 26th of November 2025
2) PR #3231 for #3230. Fixes a bug in upper_bound_psyir() for field vectors.
1) PR #3229 for #3227. Fixes a bug with PSyAD where the wrong operator
space was being generated.
Release 3.2.1 12th of November 2025
17) PR #3214 for #3188. Improves the validation when doing automatic
array privatisation.
16) PR #3187 for #3184. Improve logging when chasing imports and test
inining with the same imported symbol in the caller and the callee.
15) PR #3211 towards #1540. Resolve indirect imports when requested
by name.
14) PR #3194 towards #3183. Adds a new get_all_accessed_symbols
method to Node to reduce the cost of certain transformations.
13) PR #3204 towards #3203. Fix make calls using netcdf target.
12) PR #3182 for #2772. Add support for creating StructureReferences
with symbols of array datatype (representing a whole array access).
11) PR #3201 for #3200. Fix for comparing datatypes with equivalent
interfaces.
10) PR #3191 for #3189. Ensures that Fortran '==' is converted into
Sympy Eq(...).
9) PR #2944 for #2909. Add OWNED_DOF and OWNED_CELL_COLUMN values in the
operates_on LFRic metadata.
8) PR #3190. Add python 3.14 in the CI and integration tests (except the
LFRic Extraction tests).
7) PR #3181 for #3173. Adds protections for CodeBlocks in the
DataSharingAttributeMixin.
6) PR #3174 and #3176 towards #2668. Add kwargs to more transformations.
5) PR #3186 for #3185. Small fix to SymbolicMaths.expand for Boolean
expressions
4) PR #3170 for #3156 and #3167. Remove redundant barrier at the end
of parallel regions, and an unused DUC private attribute.
3) PR #3067 for #2525. Updates to InlineTrans to support optional
arguments
2) PR #3131 for #2049. Refactor and rename DriverCreator classes.
1) PR #3118 towards #3049. Adds the --fixed-form and --free-form flags
to the psyclone command. Also automatically determine Fortran format
from file extension if they are not supplied.
Release 3.2.0 1st of October 2025
100) PR #3166 for #3120. Add GitHub release workflow and prepare for
release 3.2.
99) PR #3161 for #3155. Optimise InlineTrans to only to a copy of the
target routine instead of the whole Container.
98) PR #3110 for #3087. Add support for declaration kind expressions by
representing them with a PSyIR tree.
97) PR #3160 for #3159 and #3140. Fix declarations with self-references.
96) PR #3153 for #3151. Fix some case-related naming comparison issues.
95) PR #3108 for #2446. Adds the ability to automatically add reduction
clauses to some OpenMP loops.
94) PR #3095 for #2916. Dynamically propagate pure and elemental
attributes to GenericInterfaceSymbols.
93) PR #3147 for #3138. Fixes reference_accesses() for Calls.
92) PR #3133 for #3132. Give specific paths to pytest compilation (
to prevent using the unpredictable '.' path).
91) PR #3137 for #3096. Add command-flag and config option to disable
all backend indentations.
90) PR #3134 towards #2398. Create an AtomicDirective mixin and add
support for atomic types other than the default.
89) PR #3136 towards #3060. Names all arguments to all calls of the
IAttr constructor (which represents intrinsic calls).
88) PR #3094 for #2851 and #3082. Improves the DA so that PSyclone
does not generate unnecessary firstprivate clauses on parallel regions.
87) PR #3127 for #3126. Disable python module index in latex version
of docs.
86) PR #3129 for #2709. Ensures that the 'disable backends check'
configuration option is passed to the FortranWriter.
85) PR #3128 for #3123. Fixes Fortran file in lfric binary extraction
library so that it works with gfortran 15.
84) PR #3116 for #2623. Remove old LFRic infrastructure and bring in
new version.
83) PR #3104. Move integration tests to new runner.
82) PR #3107 towards #3074. Update dl_esm_inf submodule.
81) PR #3103 for #3091. Fix AsyncTransMixin with loops with if-else blocks.
80) PR #3100 for #3097. Disable inheriting the options keyword in
transformation docstrings when not appropriate.
79) PR #3099 for #3089. Remove is_array from Nodes and rename it to
has_indices() in Signature.
78) PR #3106 for #3105. Add print handlers for Sympy boolean literals.
77) PR #3089 for #2781. Refine halo-depth logic for LFRic "halo" kernels.
76) PR #2910 for #2896. Adds IncreaseRankLoopArraysTrans.
75) PR #3093 for #3092. Fixes Fortran backend declarations of (1:) arrays.
74) PR #3078 for #3068. Refactors single-variable access info (to
AccessSequence).
73) PR #3088 for #1812. Implements the OMPReductionClause.
72) PR #3086 for #3071. Improves TransInfo-related deprecation warnings.
71) PR #3062 for #2671. Improves the support for allowing arrays to be
declared thread private.
70) PR #2969 for #2902. Adds LFRic driver extraction integration tests.
69) PR #3042 for #2971. Moves OMPDeclareTargetTrans and
MarkRoutineForGPUMixin into psyir/transformations.
68) PR #2893 for #2561. Add support for allocatables in the
HoistLocalArraysTrans and check for kind/type dependent symbols.
67) PR #3073 for #3072 and #1930. Move domain code out of
PSyGen.Argument to fix test issues.
66) PR #3039. Generalised loop tiling with examples
65) PR #3077 for #3076. Small optimisation to avoid computing depth in
node.walk() unless it is required.
64) PR #3023 towards #3012. Initial version of psyclonefc command
63) PR #2907 for #2878. Improves Extraction library output stats.
62) PR #3058 for #3059. Update linkcheck parameters, fix links in docs
and READMEs, update mentions of nan_check with value_range_check.
61) PR #3040 for #3038. Improves the frontend error reporting of the
psyclone command.
60) PR #2967 towards #2551. Adds a barrier minimisation step on the Async
workflow to improve its performance and adds integration tests.
59) PR #2137 towards #1312. Adds metadata support for read-only ScalarArrays
in the LFRic DSL.
58) PR #3057 for 3056. Demote OpenMP lowering error to warning.
57) PR #3018 for #3017. Fix ArrayType with defined lower bounds, but no upper
bound.
56) PR #3055. Fixes duplicated async statements in OpenACC.
55) PR #2941 for #2925. Add support for ASCII extraction and rename standalone
extraction to binary extraction.
54) PR #3053 for #3052. Fix missing psylayer openmp symbols (for LFRic with
OpenMP and profiling).
53) #3065 for #3064 - adds a pytest.ini to ensure that pytest doesn't look
in the 'external' directory if run from the project root directory.
52) PR #3014 towards #2384. Adds flags to keep comments and have directives
turned into codeblocks.
51) PR #3046 for #3045. Replace eval call with getattr in visitor.
50) PR #3037 for #3036. Remove AccessType location and is_accessed_before method.
49) PR #3043. Bring back python 3.9 in the integration tests
48) PR #2977 for #2971. Move the OMPTaskLoopTrans from transformations.py
to psyir/transformations.
47) PR #2997 for #223. Add support for logical operators in the SymPy
comparisons.
46) PR #3033 for #3031 and #3032. Prevent inserting profiling callipers to
NEMO functions and any elemental function. Also remove pure attribute when
inserting psy_data wrappers.
45) PR #2948 for #2950. Update extraction transformation to perform
extraction and driver creation at lowering
44) PR #2972 for #2971. Move the ParallelRegionTrans from transformations.py
into psyir/transformations.
43) PR #2732 for #2716. Add support for module-inlining polymorphic kernels
and rename get_kernel_schedule to get_callees (to match the Call method).
42) PR #3034 for #2837. Updates the supported versions of Python used in
the test suite to 3.10 and 3.13.
41) PR #3013 for #2856. Makes 'intrinsics available on device'
configurable.
40) PR #2962 for #2935. Errors in use of LBOUND and looping in generated
adjoint kernel.
39) PR #3021. Remove hoisted reference from chunking/tiling
transformations.
38) PR #3009 for #2981. Prevent ProfilingTrans to add callipers in regions
with potential control flow jumps.
37) PR #3029 for #3026. Fixes a bug with RegionTrans.get_node_list if a
list containing a single Schedule was provided.
35) PR #3025 for #2928. Removes commas between clauses on directives.
34) pr #3016 for #3015. Apply doxygen -u to update doxygen config file.
33) PR #3019. Adds deprecated classes for old-style Dynamo0p3 transformation
names.
32) PR #3011 for #2968. Add semantic navigation methods to Operations and
update indices/arguments/clauses methods to return tuples.
31) PR #2998 for #2620. Refactor reference_accesses method.
30) PR #2959. Update spack and enable NEMO multi-gpu.
29) PR #3000 for #2973. Improves handling of pure subroutines in definition
use chains.
28) PR #2994 for #2992. Fix bug with COMPUTE_ANNEXED_DOFS set to False.
27) PR #2979 for #2942. Change 'dynamo' references to 'LFRic' throughout.
26) PR #3002 for #2838. Upgrade CI dependencies.
25) PR #3001 for #2929. Improve docs for OMPLoopTrans.
24) PR #2999 for #2988. Fixed the unnecessary failure when 3 arguments
provided to Structure…
23) PR #2993. Add documentation for the options to kwargs ongoing conversion.
22) PR #2987 towards #11. Provides logging infrastructure and documentation.
21) PR #2995 towards #2551. Cache abs_positions to speedup dependency tools.
20) PR #2931 (#closes 2244) adds support for LFRic colour-tiling. Needs
to be selected in transformation script.
19) PR #2970 towards #2966. Add `--enable-cache` psyclone command flag.
18) PR #2989. Updates various software versions in the integration tests.
Most significant is move from Gnu 14.2 to Gnu 15.1.
17) PR #2983 for #2978. Ignore redundant return statements when creating
PSyIR.
16) PR #2964. PScylone is now available to install from Conda. This PR adds
instructions in the user guide.
15) PR #2980 for #2976. Removes jsonschema as a dependency (since it is
only required for jupyter notebooks).
14) PR #2834 for #1010, #1910, #719, #798 and #1648. Generate PSy-layers
and Kernel stubs using PSyIR lowering (instead of gen_code/f2pygen).
13) PR #2877 for #2668. Adds a new `@transformation_documentation_wrapper`
decorator that implements docstring generation for Transformation
classes, allowing for inheritance. The 'options' argument to
Transformations is now deprecated in favour of having separate, named
arguments.
12) PR #2956 for #1206. Reorganise the documentation to create an
"instrumentation" section plus other tidying.
11) PR #2930 towards #714. Adds the DebugChecksumTrans transformation
which enables a user to add checksum outputs to generic Fortran code.
10) PR #2953 for #2952. Gracefully fail when resolving transitive
(indirectly imported) type.
9) PR #2848 for #2845, #1792, #2336, #2271 and #649. Extends
reference_access and other symbol table methods to consider
symbols that are part of other symbols (e.g. precisions, shapes,
initialisations, ...)
8) PR #2908 towards #2551. Adds support for nowait and barriers for
omp do and omp target.
7) PR #2945 for #2943. Fix broken documentation links.
6) PR #2921 for #2532. Changes the documentation so that the User,
Developer and Reference Guides are all in a single build. Updates
RTD so that a pdf is made available (and removes the local copy).
Switches to using the pydata theme for the docs.
5) PR #2833. Extends the fparser caching functionality to allow the
location of the cache files to be configured. Also avoids repeated
parsing of a single file containing multiple modules.
4) PR #2664 for #1664. Add OpenACC async clause and ACCWait directive.
3) PR #2828 - adds a new ReplaceReferenceByLiteralTrans transformation.
2) PR #2914 for #2913. Consider unresolved imports when deciding scoping
location of fparser2 symbols.
1) PR #2563 for #2499. Adds ScalarisationTrans.
release 3.1.0 26th of February 2025
1) PR #2827. Update Zenodo with release 3.0.0 and update link in
README.md.
2) PR #2759 for #2758. Fixes failure seen in compilation tests if
a previous build of infrastructure existed.
3) PR #2807 for #2806. Adds a new 'RESOLVE_IMPORTS' global variable
to transformation scripts which allows the user to instruct the
frontend to chase down some (or all) module imports when constructing
the PSyIR for existing code.
4) PR #2821 for #1247. Adds support for parsing comments from the fparser2
AST tree. There are two new FortranReader arguments to select the behaviour
for comments and directives (by default they are not parsed).
5) PR #2836 for #2835. Reverts GHA to use Ubuntu 22.04 as python-3.7
not available in ubuntu-latest and linkspector is also broken.
6) PR #2820 for #2773. Adds support for the Vernier timing library.
7) PR #2840 for #2839. Raise error in FortranReader if ignore_directives
is True but ignore_comments is True.
8) PR #2832 for #2831. Reorders the arguments to the parser to meet best
practices.
9) PR #2842 for #2841. Update all copyright date ranges for 2025.
10) PR #2810. Adds caching of the fparser2 parse tree to FileInfo. Is
disabled by default.
11) PR #2814 for #2704. Adds backward accesses capabilities to the
DefinitionUseChain tool.
12) PR #2509 for #2394. Adds support for logical and character types
to the PSyData tooling.
13) PR #2862 for #2858. Change to PSyIR frontend and backend to ensure
existing parentheses in expressions are preserved.
14) PR #2825 for #2278 and #2849. Signatures AccessType now identifies
INQUIRY and TYPE_INFO, for inquiry intrinsic accesses and precision symbols.
15) PR #2855 for #2853. Allows the Fortran standard used by fparser to
be set in the config file and ensure it is used consistently.
16) PR #2857 for 2854. Excludes character assignments from ACC KERNELS
regions to avoid issues in NEMO.
17) PR #2829 for #2826. Adds a --config command-line argument to the
PSyAD script (to replicate that for psyclone).
18) PR #2280 for #2723. Add support for dependency analysis involving
array ranges.
19) PR #2885. Update integration test dependencies.
20) PR #2799 for #2779. Implement split finite-element order for
function spaces in the LFRic API and update Adjoint tests to use it.
21) PR #2883 for #2875. Fix issues cannonicalising WHEREs with elemental
functions.
22) PR #2890 for #2399. PSyKE: adds support for partially-written
fields.`
23) PR #2901 for #2900. Fixes the LFRic integration tests and updates
the versions of LFRic core and apps used therein.
24) PR #2865 for #2864. Enable split finite-element order and
anisotropic quadrature points in the LFRic API.
25) PR #2859 for #2787. Fixes the NEMO integration tests and updates
the version of NVHPC used by them.
26) PR #2897 for #2892. Extends LFRic user-supplied kernels that
operate on dofs to accept field-vector arguments.
27) PR #2899 for #2889. Adds support for non-allocatable arrays to
kernel extraction.
28) #2744 update version number prior to release.
release 3.0.0 6th of December 2024
1) PR #2477 for #2463. Add support for Fortran Namelist statements.
2) PR #2367 for #2296. Extends ModuleInfo so that it can be queried
for the Routines contained in a Module.
3) PR #2435 for #2422. Add PSyIR GenericInterface to capture the
information about which routines implement a specific interface symbol.
4) PR #2457 for #2455. Splitting and renaming DynDofMaps from
dynamo0p3.py.
5) PR #2506. Update test and integration test dependencies.
6) PR #2508 for #2507. Add a symbols_to_ignore argument to some
symbol_table operations and use it to fix inline transformation issues.
7) PR #2505 towards #1010. Use the PSyIR Fortran backend for LFRic
loops and anything inside them.
8) PR #2516 for #2513. Resolve flake8 issues and make it the only CI
linter.
9) PR #2512 towards #11. Adds comments giving the reason for any
CodeBlocks in the generated code.
10) PR #2474 for #2409. Adds comments to the generated LFRic PSy
layer describing any built-in kernels.
11) PR #2511 for #2510. Array2Loop transformations avoid character arrays
unless requested in the transformation options.
12) PR #2521 for #2520. Fix issue with line_length runme example.
13) PR #2539 for #2538. Add PSyIR Symbol PreprocessorInterface.
14) PR #2540 for #2537. Add 'allow_renaming' parameter to the symbol_table
new_symbol method and improve its import handling.
15) PR #2497 for #2496. Updates the GOcean access-info functionality
to use PSyIR rather than strings for indices.
16) PR #2549 for #2548. Update Codecov action.
17) PR #2396 for #2229. Add PSyIR support for select-type (the selector is
still a CodeBlock but the case bodies are transferred to a conditional
construct after the CodeBlock).
18) PR #2545 for #2544. Accept -c as shortcut for --config in the CLIs.
19) PR #2527 for #1495. Add PSyIR support for type-bound procedure
calls.
20) PR #2529 towards #1779. Generalise NemoArrayAccess2Loop
transformation to ArrayAccess2Loop.
21) PR #2517 for #2515. Fix bugs in the symbol_table merge method.
22) PR #2553 for #2449. Add next/previous_access reference method.
23) PR #2557 towards #2543. Update the introduction to the User
Guide and the top-level README.
24) PR #2560 for #2559. Marks the PRODUCT intrinsic as available on
accelerator devices.
25) PR #2581 for #2576. Updates a tutorial README to remove a now-
dead link to the VMWare KnowledgeBase from a quoted VMWare error
message.
26) PR #2571 for #2569. Update integration tests for new system
(lfric still has issues that will be resolved separately).
27) PR #2567 for #1333. Fixes bug in Fortran backend with missing
parentheses for unary minus operator.
28) PR #2579 for #2578. Fix missing location update for Call node
in DA tooling.
29) PR #2556 towards #1351. Documents the new OPERATES_ON=dof
LFRic kernel type.
30) PR #2252 for #1990. Support extraction of kernels that import
variables from other modules.
31) PR #2547 towards #1779. Removes the NemoLoop node and makes
the loop_type inference rules part of generic PSyIR.
32) PR #2590 fpr #2589. Moves to the latest LFRic (split repo)
and fixes the LFRic integration tests.
33) PR #2452 for #2451. Move and rename DynInvokeSchedule to
LFRicInvokeSchedule.
34) PR #2574 for #2196. Add support for use-intrinsic imports.
35) PR #2566 towards #2156. Bug fixes for routines declared as
ELEMENTAL or IMPURE. (Alters the Fortran backend and
Routine.copy().)
36) PR #2572 for #2195. Improves SymbolTable.__str__ such that
Symbols are listed by type and in alpha-order.
37) PR #2593 for #1779. Removes the 'default' API concept and
renames 'dynamo0.3' -> 'lfric' and 'gocean0.1' -> 'gocean'.
38) PR #2599. Update integration test dependencies.
39) PR #2564 for $2462. Generalise ModuleManager.
40) PR #2598 towards #2543. Refresh the PSyKAl-related documentation
in both the User and Developer Guides.
41) PR #2611. Update Integration tests nvhpc mpi library path.
42) PR #2614 towards #2604. Fixes broken links to the docs in the
various tutorial READMEs.
43) PR #2587 for #1989. Improves the statistics produced by the
generated PSyKE driver code.
44) #PR #2602 for #1596. Exclude assumed-size variable references from
the ACCKernels regions.
45) PR #2603 for #1841. Refactors the ArrayRange2Loop transformation
(merging in functionality from the NEMO-specific version). Renames it
to ArrayAssignment2LoopsTrans.
46) PR #2615 for #2610. Fixes various spurious warnings that were
being produced by the lfric/eg17/full_example_extract example.
47) PR #2625 for #2619. Adds a create function for OMPParallelDoDirective
to avoid issues from using its parent class' create method.
48) PR #2609 for #2407. The OpenACC routine directive and transformation
now accept a "parallelism" attribute to set the level of parallelism, which
is mandatory in recent OpenACC standards.
49) PR #2626 for #2622. Adds convenience methods to the SymbolTable for
manipulating Routine argument lists.
50) PR #2607 FOR #2600. Update psyclone command and script interface
to remove mention of 'nemo' API.
51) PR #2575 towards #2201. Allow FileContainer to have symbols of their
inner subroutines. It also solves an issue with missing PURE, ELEMENTAL, ...
52) PR #2632 for #2116. Update the code-transformation tutorial.
53) PR #2639 for #2638. Upgrade CI markdown-linkcheck to linkspector.
54) PR #2583 towards #2577. Adds partial support for pointer
assignments. (Array accessors within structures are not supported.)
Pointer *declarations* will still result in symbols of
UnsupportedFortranType.
55) PR #2445 for #2444. Changes the kernel-extraction tooling so
that filenames are construction using dashes instead of colons.
56) PR #2646 for #2641. Fixes incorrect module names within the
PSyData API (e.g. when profiling).
57) PR #2647 for #1992. Adds MPI support to PSyKE. Each rank will write
its own output file(s). The generated driver has been extended so that
the name of the file to use can be specified on the command line.
58) PR #2637 for #2138. Add Fortran frontend support to parser array
declarations with expressions in their shape dimensions.
59) PR #2649 towards #2586. Adds support for pointer assignments of
the form `var =[>] this[%...]%procedure(...)`.
60) PR #2645 towards #2585. Add an optional "otherwise" argument to
the SymbolTable lookup method.
61) PR #2633 for #2125. Introduces the "replace_symbols_using" method
to guarantee that PSyIR trees after a copy have references to the
updated symbols (including in attributes that are not directly in the
tree).
62) PR #2662 for #2082. Fixes HoistTrans so that it checks for
possible side-effects. Also now removes the parent Loop if the hoist means
it no longer has a body.
63) PR #2660 for #1370. Adds 'collapse' and 'ignore_dependencies_for'
options to ParallelLoopTrans.
64) PR #2653. Add example using the PSyclone xDSL MLIR backend.
65) PR #2673 for #2652. Find the symbol name containing a kernel metadata
by searching the PSyIR (instead of assuming the name).
66) PR #2651 for #2617. Fixes PSyKE driver create for LFRic in the
event of a call to a generic routine interface.
67) PR #2650 for #2630. Adds basic support for DATA statements in the
fparser2 frontend.
68) PR #2679 for #2676. Adds check for impure calls to the
ParallelLoopTrans.validate method. This fixes a race condition in the
sea-ice code in NEMO. Updates the NEMO workflow so that error
reporting is improved and timing results no longer uploaded to gist.
69) PR #2656 for #2634. Fixes and improvements for the 'nemo' tutorials.
70) PR #2413 towards #924. Add find_container_psyir, find_routine_psyir
and get_callees utilities to simplify the inlining transformation.
71) PR #2523 towards #1719. Add the poly_{1,2}d_reconstruction kernels
and tweak the adjoint README files.
72) PR #2675 towards #1351. Refactors the LFRic metadata checking and
adds support for user-supplied kernels that operate on dofs.
73) PR #2700 for #2699. Fix docstring error for Config class.
74) PR #2698 for #2629. Fix NEMOv5 issues and extend related
integration tests.
75) PR #2710 for #2665. Improves error messages for line-length and
kernel arguments.
76) PR #2692 for #2691. Increase recursion limit when handling
conditional statements with many branches. Disable final tree copy
when generating code.
77) PR #2708 for #2663. Add LFRic OpenACC in the integration tests.
78) PR #2678 for #2636. Alter LFRic PSy-layer to lookup nlayers for
each kernel.
79) PR #2687 for #2684. Add support for WHERE constructs that contain
references without range-notation (and prevent some incorrect cases).
80) PR #2596 for #2592 and #2582. Routine nodes manage their own
symbols from their parent scope.
81) PR #2725 to close #717. Removes some TODOs and associated utility code
from the fparser2 frontend that is now unused.
82) PR #2733 for #2730. Adds OpenMP offloading support for LFRic plus
associated integration test.
83) PR #2743 for #2742. Ensure generated code for function spaces in
LFRic is always in a consistent order.
84) PR #2746. Update minor versions of CUDA, HDF5, nvfortran and
Python used in the CI.
85) PR #2748. Revert Python used on RTD to 3.12 as 3.13 unsupported.
86) PR #2707 for #257. Fixes bugs in the loop-fusion transformation.
87) PR #2752 towards #2717. Adds Assignment.is_literal_assignment property.
88) PR #2753 towards #2717. Adds DataNode.is_character method.
89) PR #2712 for #2711. Adds support for user-supplied Kernels that
operate on dofs (in the LFRic API).
99) PR #2685 for #2027. Improves datatype and shape inference.
100) PR #2694 for #2690. Extends the PSyData NaN-checking tooling to
perform value verification.
101) PR #2749 for #2311. Alters test-harness generation for the LFRic
API in PSyAD to base the generated test-code filenames on the name of
the supplied LFRic Algorithm file.
102) PR #2763 towards #2717. Upstreams PSyACC functionality: ensures
that clauses on an OpenACC directive are consistent.
103) PR #2734 towards #2704. Implements the forward_dependency part of
the new DefinitionUseChain PSyIR tool.
104) PR #2761 for #2739. Updates the signature of the PSyKAl
transformation script to accept a PSyIR node.
105) PR #2745 for #2661. Add support for kernels that operate on halos.
106) PR #2770 towards #2543. Improve UG introduction.
107) PR #2776 for #1280. Fixes ref_guide warnings.
108) PR #2767 for #2755. Bug fix for psyad failing to transform array
assignment
109) PR #2785 towards #759. Populates partial_datatype for OPTIONAL.
110) PR #2789 for #2778. Removes some old TODOs now that kernel
extraction for GOcean has been improved.
111) PR #2791 for #2790. Updates the dl_esm_inf git submodule to point
to the latest version.
112) PR #2795 for #2774. Generalises MatMul2CodeTrans to cope with
non-contiguous array slices.
113) PR #2769 for #2768. Generalises Sign2CodeTrans and Abs2CodeTrans
to allow non-floating point scalar literals.
114) PR #2461 for #2460. Renames DynamoPSy class to LFRicPSy and moves
into a new module lfric_psy.py in domain/lfric.
115) PR #2697 towards #2671. Fixes various issues relating to incorrect
parallelisation of loops in NEMO. Also adds support for array-
privatisation option.
116) PR #2804 towards #2737. Update PSyclone to use fparser 0.2.0 release.
117) PR #2803 for #2796. Fixes bug where PSyData nodes inserted within
LFRic loops did not have the associated variable declared.
118) PR #2792 for # 2766. Updates to all the examples and test
infrastructure now that the index ordering for operators in LFRic
has been changed.
119) PR #2775. Adds Call.get_callee() which matches the arguments of
a Call against the signature of potential callees.
120) PR #2628 for #2624. Improves debug_string output for Schedules.
121) PR #2800. Updates integration test dependencies and documentation
about compiling for GPUs.
122) PR #2811. Adds sphinx-autodoc-typehints package to 'doc'
dependencies so that Sphinx markup is able to make use of the
typehints that we are starting to add to the code base.
123) PR #2809 for #2737. Updates documentation on OpenMP to point to
examples of transformations for CPU and GPU.
124) PR #2815 for #2636. Get nlayers from first field or operator
argument to each kernel in LFRic.
125) PR #2817 for #2816. Fix index type in initialisation of arrays
of fields in PSyAD test harness construction.
release 2.5.0 14th of February 2024
1) PR #2199 for #2189. Fix bugs with missing maps in enter data
directive.