forked from stfc/PSyclone
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchangelog
More file actions
3774 lines (2529 loc) · 136 KB
/
changelog
File metadata and controls
3774 lines (2529 loc) · 136 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
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 GenericInterefaceSymbols.
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 unneccessary 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 `--enble-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 indentifies
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 depencency 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 SymbolTalbe 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 tranformations 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.
2) PR #2269 for #2268. Rename DynInvokes to LFRicInvokes and move
to own module.
3) PR #2255 for #2237. The derived type intial values are not lost
anymore, and the "extends" or "abstract" keywords cause a
UnknownFortranType.
4) PR #1822 towards #1338. Adds support for the OMP tasking
directive and transformation.
5) PR #2346 for #2345. Make the integration tests use a parameterised
version of python, currently 3.11.4. Pin pylint to < 3.0
6) PR #2325 for #1947. Adds support for OMP/ACC Atomics and OMP Simd
directives.
7) PR #2355 for #2347. Adds testing to demonstrate that the new LFRic
metadata handling works for multi-precision kernels.
8) PR #2342 for #2340. Fix issues with VERIFY, ISHFTC and PRECISION
intrinsics and introduce a NEMO passthrough test.
9) PR #2350 for #2349. Update to HEAD of fparser master to get
fparser1 fix for parsing WHERE.
10) PR #2285 for #2284. Split LFRicRunTimeChecks from dynamo0p3.py.
11) PR #2313 towards #2197. LFRic PSyLayer uses array pointers instead
of derived types accessors in the kernel/builtin arguments.
12) PR #2321 for #2319. Refactors DynStencil into a dataclass named
LFRicArgStencil.
13) PR #2361 for #2360. Fix LFRic Loop.independent_iterations with domain
information and allow sequential directives on loops with dependencies.
14) PR #2365 for #2351. Fix ref2arrayrange allocated bug.
15) PR #2363 for #1254. Fortran FORMAT, ENTRY and IMPLICIT statements
produce CodeBlocks instead of losing the statements.
16) PR #2357 for #2353. Adds the ACC-loops NEMO transformation script
and includes its use in the integration testing.
17) PR #2380 and #2378 for #2369. Add PSyIR node.sibilings property.
18) PR #2375 for #2374. Bug fix for LFRic kernel-extraction driver
creation for netcdf.
19) PR #2385. Update tests to include python 3.12.
20) PR #2377 for #2368. Adds optional 'depth' argument to Node.walk().
21) PR #2362 for #2243 and #2312. Add support for Fortran save statements.
22) PR #2379 for #2370. Adds a Node.get_sibling_lists() method.
23) PR #2366 towards #342. Improve symbols and tighten-up ACCRoutineTrans
validation.
24) PR #2383 towards #2256. Adds support for 'DO CONCURRENT' in the
fparser2 frontend.
25) PR #2100 for #2091. Renames DynKern to LFRicKern and moves its
implementation to domain/lfric.
26) PR #2391 for #2390. Fix bug in generator.py error message.
27) PR #2364 towards #1941. Moves map of LFRic precisions to
config. file.
28) PR #2376 for #1525. Add lowering methods to all LFRic Built-ins.
29) PR #2406 for #2404. Fixes bug in setop_random kernel (was only
filling the lowest vertical level).
30) PR #2389 toward #928. Adds support for field_bcs_kernel when
parsing kernels using kernel_interface.py. This is required when
validating LFRic kernel arguments.
31) PR #2388 for #2323. Rename the array reduction 2code transformations
to use the 2loop postfix and improve their implementation.
32) PR #2400 for #1508. Add flag/config option to disable backend checks.
33) PR #2428 for #2427. Fixes bug in MaxVal2LoopTrans.
34) PR #2430 towards #2421. Ensures local symbol table is merged into
routine scope following an inline transformation. (Works around
#2424.)
35) PR #2412 for #2411. Remove NemoKern and add the 'routine' profiling
option to the psyclone command.
36) PR #2401 for #2261. Split DynLoop out of dynamo0p3 and rename.
37) PR #2387 towards #1799. Add support for querying the datatype of
operations.
38) PR #2434 for #2433. Bug fix for process_nemo.py script to
aggregate -I arguments.
39) PR #2426 for #2254. Make LFRic PSyAD test harness use LFRic
logging API.
40) PR #2273 for #2272. Split LFRicFields into domain/lfric module.
41) PR #2393 for #2392. Split and rename DynKernMetadata into
into domain/lfric module (LFRicKernMetadata class).
42) PR #2240 for #2132. Update Integration test software stack.
43) PR #2454 for #2418. Fix OMPTaskTrans attempts to inline IntrinsicCalls.
44) PR #2459 for #2458. Fix broken documentation links.
45) PR #2472 for #2471. Update all copyright dates to include 2024 and
add utils/update_copyright.sh script to do this task.
46) PR #2443 for #2442. Fix bug for PSy-layer generation involving CMA
operators in the LFRic API.
47) PR #2481 for #1192. Unpin jsonschema version.
48) PR #2470 for #2468 and towards #237. Fixes Sphinx link-check errors
for links to anchors in User Guide and also updates the name of the
dl_esm_inf library and updates associated links (remove references to
puma).
49) PR #2420 towards #1786. Add and update Built-ins to support
mixed precision in the LFRic API: real to real, real to integer
and integer to real field types.
50) PR #2480 for #2479. Updates .gitignore for files generated by
examples.
51) PR #2486 for #2419. Renames Unknown[Fortran]Type to
Unsupported[Fortran]Type and DeferredType to UnresolvedType.
52) PR #2482 towards #2062. Adds a new 'origin_string()' method
to Node to return information on the origin (line number and file
name) of a PSyIR node.
53) PR #2439 for #2105. Use maxval2loop and atomics to parallelise
NEMO stpctl.f90.
54) PR #2493 for #2492. Fix bug in NemoOuterArrayRange2LoopTrans
55) PR #2465 towards #2004. Move same_range functionality to
ArrayMixin and other improvements.
56) PR #2372 towards #1960. Fix bugs on Fortran WHERE canonicalisation.
57) PR #2489 for #2488. Unify generic LoopFuseTrans and allow renaming
the second loop variable for certain cases.
58) PR #2423 for #2410. Split off and rename DynStencils to
LFRicStencils in the LFRic API.
59) PR #2490 towards #2447. Update PSyclone to use fparser 0.1.4 release.
60) PR #2501 for #2447. Create PSyclone release 2.5.0.
release 2.4.0 29th of September 2023
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().