PSyclone
PSyclone copied to clipboard
Domain-specific compiler and code transformation system for Finite Difference/Volume/Element Earth-system models in Fortran
PSyAD requires there to be a single subroutine in a kernel. However, with the mixed precision code coming on line some kernels have two subroutines in them (e.g. matrix_vector_kernel_mod.F90).
Now that GOcean kernel metadata is about to go on master we can use the same approach to extract LFRic kernel metadata.
We need a simple way to read, access, manipulate and write Kernel metadata. In the short term this is required for LFRic Algorithm PSyIR where we need to know kernel...
While debugging various LFRic crashes, we found ourselves often in the position that we know a variable has incorrect values (not necessarily NAN, but e.g.0, or just garbage), and we...
ATM it is rather complicated to apply a psydata library with lfric. For example for nan testing: 1. Modify the psyclone transformation to apply a psydata transformation. 2. In the...
When trying to process poly1d_vert_adv_kernel_mod.F90 with psyad sympy expression errors occur.
We need to add support for arrays declared like a(0:n-1). At the moment they are stored as unknown fortran type, however this caused psyad to fail in poly2d_w3_reconstruction_kernel_mod.F90
operator_algebra_kernel_mod.F90 contains multiple kernels within a single module. psyad does not expect this and there is no way to specify which kernel we would like to adjoint (or perhaps we...
jac = matmul(jac_inv,transpose(jac_inv))
Currently PSyIR comments are added with expressions like: ``` block = Comment(FortranStringReader("! My comment\n", ignore_comments=False)) codeblock = CodeBlock([block], CodeBlock.Structure.STATEMENT) ``` This expression have 2 limitations: - It's Fortran specific -...