The algorithm layer is currently parsed and transformed with fparser2. We should use the PSyIR instead for flexibility and to support potential future optimisations. The idea would be to parse to low level PSyIR then to recognise invoke regions, Kernels and arguments with particular types (fields, scalars, ...) and have domain-specific nodes for these. In the first instance we would need to be able to re-create the existing algorithm transformation performed by fparser2.
Once the above is working then additional functionality to try to determine the datatypes, function spaces etc. of algorithm arguments (within invokes) that passed into the PSy-layer. This could then be used to perform static correctness checks between algorithm fields and kernel arguments (specified with metadata).
This would complement issue #79.
The algorithm layer is currently parsed and transformed with fparser2. We should use the PSyIR instead for flexibility and to support potential future optimisations. The idea would be to parse to low level PSyIR then to recognise invoke regions, Kernels and arguments with particular types (fields, scalars, ...) and have domain-specific nodes for these. In the first instance we would need to be able to re-create the existing algorithm transformation performed by fparser2.
Once the above is working then additional functionality to try to determine the datatypes, function spaces etc. of algorithm arguments (within invokes) that passed into the PSy-layer. This could then be used to perform static correctness checks between algorithm fields and kernel arguments (specified with metadata).
This would complement issue #79.