-
Notifications
You must be signed in to change notification settings - Fork 29
/
changelog
3280 lines (2213 loc) · 118 KB
/
changelog
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
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 nlevels 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.
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().
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