Reference Guide
2.5.0
|
Public Member Functions | |
def | __init__ (self) |
def | reference_accesses (self, var_accesses) |
def | load (self, call, parent=None) |
def | load_meta (self, ktype) |
def | qr_rules (self) |
def | cma_operation (self) |
def | is_intergrid (self) |
def | colourmap (self) |
def | last_cell_all_colours_symbol (self) |
def | ncolours_var (self) |
def | fs_descriptors (self) |
def | qr_required (self) |
def | eval_shapes (self) |
def | eval_targets (self) |
def | reference_element (self) |
def | mesh (self) |
def | all_updates_are_writes (self) |
def | base_name (self) |
def | argument_kinds (self) |
def | gen_stub (self) |
def | get_kernel_schedule (self) |
def | validate_kernel_code_args (self, table) |
def | validate_global_constraints (self) |
Public Member Functions inherited from psyclone.psyGen.CodedKern | |
def | __init__ (self, KernelArguments, call, parent=None, check=True) |
def | opencl_options (self) |
def | set_opencl_options (self, options) |
def | __str__ (self) |
def | module_name (self) |
def | dag_name (self) |
def | module_inline (self) |
def | module_inline (self, value) |
def | node_str (self, colour=True) |
def | lower_to_language_level (self) |
def | incremented_arg (self) |
def | ast (self) |
def | rename_and_write (self) |
def | modified (self) |
def | modified (self, value) |
Public Member Functions inherited from psyclone.psyGen.Kern | |
def | __init__ (self, parent, call, name, ArgumentsClass, check=True) |
def | args (self) |
def | is_reduction (self) |
def | reduction_arg (self) |
def | reprod_reduction (self) |
def | local_reduction_name (self) |
def | zero_reduction_variable (self, parent, position=None) |
def | reduction_sum_loop (self, parent) |
def | arg_descriptors (self) |
def | arg_descriptors (self, obj) |
def | arguments (self) |
def | name (self) |
def | name (self, value) |
def | is_coloured (self) |
def | iterates_over (self) |
def | local_vars (self) |
def | gen_code (self, parent) |
Static Public Attributes | |
QRRule | |
Additional Inherited Members | |
Public Attributes inherited from psyclone.psyGen.CodedKern | |
arg_descriptors | |
modified | |
name | |
Stores information about LFRic Kernels as specified by the Kernel metadata and associated algorithm call. Uses this information to generate appropriate PSy layer code for the Kernel instance or to generate a Kernel stub.
Definition at line 59 of file lfric_kern.py.
def psyclone.domain.lfric.lfric_kern.LFRicKern.all_updates_are_writes | ( | self | ) |
:returns: True if all of the arguments updated by this kernel have \ 'GH_WRITE' access, False otherwise. :rtype: bool
Definition at line 538 of file lfric_kern.py.
References psyclone.expression.FunctionVar.args, psyclone.f2pygen.SubroutineGen.args(), psyclone.parse.algorithm.ParsedCall.args(), psyclone.psyGen.GlobalSum.args(), psyclone.psyGen.HaloExchange.args(), psyclone.psyGen.Kern.args(), psyclone.psyGen.Arguments.args(), and psyclone.psyir.nodes.node.Node.args().
def psyclone.domain.lfric.lfric_kern.LFRicKern.argument_kinds | ( | self | ) |
:returns: kinds (precisions) for all arguments in a kernel. :rtype: set of str
Definition at line 559 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._argument_kinds.
def psyclone.domain.lfric.lfric_kern.LFRicKern.base_name | ( | self | ) |
:returns: a base name for this kernel. :rtype: str
Definition at line 551 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._base_name.
def psyclone.domain.lfric.lfric_kern.LFRicKern.cma_operation | ( | self | ) |
:return: the type of CMA operation performed by this kernel (one of 'assembly', 'apply' or 'matrix-matrix') or None if the kernel does not involve CMA operators. :rtype: str
Definition at line 380 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._cma_operation, and psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._cma_operation.
def psyclone.domain.lfric.lfric_kern.LFRicKern.colourmap | ( | self | ) |
Getter for the name of the colourmap associated with this kernel call. :returns: name of the colourmap (Fortran array). :rtype: str :raises InternalError: if this kernel is not coloured.
Definition at line 398 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._intergrid_ref, psyclone.psyir.nodes.node.Node.ancestor(), psyclone.psyGen.Kern.is_coloured(), psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.is_intergrid(), psyclone.domain.lfric.lfric_kern.LFRicKern.is_intergrid(), and psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata.is_intergrid().
def psyclone.domain.lfric.lfric_kern.LFRicKern.eval_shapes | ( | self | ) |
:return: the value(s) of GH_SHAPE for this kernel or an empty list \ if none are specified. :rtype: list
Definition at line 501 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._eval_shapes, and psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._eval_shapes.
def psyclone.domain.lfric.lfric_kern.LFRicKern.eval_targets | ( | self | ) |
:return: the function spaces upon which basis/diff-basis functions \ are to be evaluated for this kernel. :rtype: dict of (:py:class:`psyclone.domain.lfric.FunctionSpace`, \ :py:class`psyclone.dynamo0p3.DynKernelArgument`), indexed by \ the names of the target function spaces.
Definition at line 511 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._eval_targets, psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._eval_targets, and psyclone.dynamo0p3.DynBasisFunctions._eval_targets.
def psyclone.domain.lfric.lfric_kern.LFRicKern.fs_descriptors | ( | self | ) |
:return: a list of function space descriptor objects of type FSDescriptors which contain information about the function spaces. :rtype: List[:py:class:`psyclone.FSDescriptors`].
Definition at line 481 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._fs_descriptors, psyclone.domain.lfric.lfric_kern.LFRicKern._fs_descriptors, and psyclone.psyGen.BuiltIn._fs_descriptors.
def psyclone.domain.lfric.lfric_kern.LFRicKern.gen_stub | ( | self | ) |
Create the fparser1 AST for a kernel stub. :returns: root of fparser1 AST for the stub routine. :rtype: :py:class:`fparser.one.block_statements.Module` :raises GenerationError: if the supplied kernel stub does not operate \ on a supported subset of the domain (currently only "cell_column").
Definition at line 568 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._base_name, psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.iterates_over, psyclone.parse.kernel.KernelType.iterates_over(), and psyclone.psyGen.Kern.iterates_over().
def psyclone.domain.lfric.lfric_kern.LFRicKern.get_kernel_schedule | ( | self | ) |
Returns a PSyIR Schedule representing the kernel code. The base class creates the PSyIR schedule on first invocation which is then checked for consistency with the kernel metadata here. The Schedule is just generated on first invocation, this allows us to retain transformations that may subsequently be applied to the Schedule. Once issue #935 is implemented, this routine will return the PSyIR Schedule using LFRic-specific PSyIR where possible. :returns: Schedule representing the kernel code. :rtype: :py:class:`psyclone.psyGen.KernelSchedule` :raises GenerationError: if no subroutine matching this kernel can \ be found in the parse tree of the associated source code.
Reimplemented from psyclone.psyGen.CodedKern.
Definition at line 632 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._kern_schedule, psyclone.gocean1p0.GOKern._kern_schedule, psyclone.psyGen.CodedKern._kern_schedule, psyclone.parse.kernel.KernelProcedure.ast(), psyclone.psyGen.CodedKern.ast(), psyclone.psyir.nodes.codeblock.CodeBlock.ast, psyclone.psyir.nodes.node.Node.ast(), psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.name, psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.GridArg.name, psyclone.domain.gocean.transformations.gocean_const_loop_bounds_trans.GOConstLoopBoundsTrans.name(), psyclone.domain.gocean.transformations.gocean_move_iteration_boundaries_inside_kernel_trans.GOMoveIterationBoundariesInsideKernelTrans.name(), psyclone.domain.gocean.transformations.gocean_opencl_trans.GOOpenCLTrans.name(), psyclone.domain.lfric.kernel.lfric_kernel_metadata.LFRicKernelMetadata.name, psyclone.domain.nemo.transformations.create_nemo_invoke_schedule_trans.CreateNemoInvokeScheduleTrans.name(), psyclone.domain.nemo.transformations.create_nemo_psy_trans.CreateNemoPSyTrans.name(), psyclone.domain.nemo.transformations.nemo_allarrayrange2loop_trans.NemoAllArrayRange2LoopTrans.name(), psyclone.domain.nemo.transformations.nemo_arrayrange2loop_trans.NemoArrayRange2LoopTrans.name(), psyclone.domain.nemo.transformations.nemo_outerarrayrange2loop_trans.NemoOuterArrayRange2LoopTrans.name(), psyclone.dynamo0p3.DynamoPSy.name(), psyclone.expression.FunctionVar.name, psyclone.expression.NamedArg.name(), psyclone.gocean1p0.GOKernelGridArgument.name(), psyclone.gocean1p0.GOStencil.name(), psyclone.parse.algorithm.FileInfo.name(), psyclone.parse.algorithm.InvokeCall.name(), psyclone.parse.kernel.KernelProcedure.name(), psyclone.parse.kernel.KernelType.name(), psyclone.parse.module_info.ModuleInfo.name(), psyclone.psyad.transformations.assignment_trans.AssignmentTrans.name(), psyclone.psyGen.PSy.name(), psyclone.psyGen.Invoke.name(), psyclone.psyGen.Kern.name(), psyclone.psyGen.CodedKern.name, psyclone.psyGen.Argument.name(), psyclone.psyGen.Transformation.name(), psyclone.psyGen.DummyTransformation.name(), psyclone.psyir.nodes.container.Container.name, psyclone.psyir.nodes.member.Member.name, psyclone.psyir.nodes.reference.Reference.name(), psyclone.psyir.nodes.routine.Routine.name, psyclone.psyir.symbols.symbol.Symbol.name(), psyclone.psyir.transformations.allarrayaccess2loop_trans.AllArrayAccess2LoopTrans.name(), psyclone.psyir.transformations.arrayrange2loop_trans.ArrayRange2LoopTrans.name(), psyclone.psyir.transformations.fold_conditional_return_expressions_trans.FoldConditionalReturnExpressionsTrans.name(), psyclone.psyir.transformations.loop_trans.LoopTrans.name(), psyclone.psyir.transformations.omp_task_trans.OMPTaskTrans.name(), psyclone.psyir.transformations.psy_data_trans.PSyDataTrans.name(), psyclone.transformations.OMPSingleTrans.name(), psyclone.transformations.OMPMasterTrans.name(), psyclone.transformations.OMPParallelTrans.name(), psyclone.transformations.MoveTrans.name(), psyclone.transformations.Dynamo0p3AsyncHaloExchangeTrans.name(), psyclone.transformations.Dynamo0p3KernelConstTrans.name(), psyclone.transformations.ACCEnterDataTrans.name(), psyclone.transformations.ACCRoutineTrans.name(), psyclone.transformations.ACCKernelsTrans.name(), psyclone.transformations.ACCDataTrans.name(), psyclone.transformations.KernelImportsToArguments.name(), and psyclone.domain.lfric.lfric_kern.LFRicKern.validate_kernel_code_args().
def psyclone.domain.lfric.lfric_kern.LFRicKern.is_intergrid | ( | self | ) |
:return: True if it is an inter-grid kernel, False otherwise :rtype: bool
Definition at line 390 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._intergrid_ref.
def psyclone.domain.lfric.lfric_kern.LFRicKern.last_cell_all_colours_symbol | ( | self | ) |
Getter for the symbol of the array holding the index of the last cell of each colour. :returns: name of the array. :rtype: str :raises InternalError: if this kernel is not coloured.
Definition at line 427 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._intergrid_ref, psyclone.psyir.nodes.node.Node.ancestor(), psyclone.psyGen.Kern.is_coloured(), psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.is_intergrid(), psyclone.domain.lfric.lfric_kern.LFRicKern.is_intergrid(), psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata.is_intergrid(), psyclone.psyir.nodes.node.Node.scope(), and psyclone.psyir.symbols.symbol_table.SymbolTable.scope().
def psyclone.domain.lfric.lfric_kern.LFRicKern.load | ( | self, | |
call, | |||
parent = None |
|||
) |
Sets up kernel information with the call object which is created by the parser. This object includes information about the invoke call and the associated kernel. :param call: The KernelCall object from which to extract information about this kernel :type call: :py:class:`psyclone.parse.algorithm.KernelCall` :param parent: The parent node of the kernel call in the AST we are constructing. This will be a loop. :type parent: :py:class:`psyclone.domain.lfric.LFRicLoop`
Definition at line 139 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._setup(), and psyclone.domain.lfric.lfric_kern.LFRicKern._setup_basis().
def psyclone.domain.lfric.lfric_kern.LFRicKern.load_meta | ( | self, | |
ktype | |||
) |
Sets up kernel information with the kernel type object which is created by the parser. The object includes the metadata describing the kernel code. :param ktype: the kernel metadata object produced by the parser :type ktype: :py:class:`psyclone.domain.lfric.LFRicKernMetadata` :raises InternalError: for an invalid data type of a scalar argument. :raises GenerationError: if an invalid argument type is found \ in the kernel.
Definition at line 155 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._base_name, psyclone.domain.lfric.lfric_kern.LFRicKern._basis_required, psyclone.domain.lfric.lfric_kern.LFRicKern._cma_operation, psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._cma_operation, psyclone.domain.lfric.lfric_kern.LFRicKern._eval_shapes, psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._eval_shapes, psyclone.domain.lfric.lfric_kern.LFRicKern._eval_targets, psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._eval_targets, psyclone.dynamo0p3.DynBasisFunctions._eval_targets, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._fs_descriptors, psyclone.domain.lfric.lfric_kern.LFRicKern._fs_descriptors, psyclone.psyGen.BuiltIn._fs_descriptors, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._func_descriptors, psyclone.domain.lfric.lfric_kern.LFRicKern._func_descriptors, psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._func_descriptors, psyclone.psyGen.BuiltIn._func_descriptors, psyclone.domain.lfric.lfric_kern.LFRicKern._intergrid_ref, psyclone.domain.lfric.lfric_kern.LFRicKern._mesh_properties, psyclone.domain.lfric.metadata_to_arguments_rules.MetadataToArgumentsRules._mesh_properties(), psyclone.domain.lfric.lfric_kern.LFRicKern._qr_rules, psyclone.domain.lfric.kernel.meta_ref_element_arg_metadata.MetaRefElementArgMetadata._reference_element, psyclone.domain.lfric.lfric_kern.LFRicKern._reference_element, psyclone.domain.lfric.lfric_kern.LFRicKern._setup(), psyclone.domain.lfric.lfric_kern.LFRicKern._setup_basis(), psyclone.psyir.nodes.node.Node.ancestor(), psyclone.psyGen.Kern.arguments(), psyclone.psyir.nodes.call.Call.arguments(), psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.name, psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.GridArg.name, psyclone.domain.gocean.transformations.gocean_const_loop_bounds_trans.GOConstLoopBoundsTrans.name(), psyclone.domain.gocean.transformations.gocean_move_iteration_boundaries_inside_kernel_trans.GOMoveIterationBoundariesInsideKernelTrans.name(), psyclone.domain.gocean.transformations.gocean_opencl_trans.GOOpenCLTrans.name(), psyclone.domain.lfric.kernel.lfric_kernel_metadata.LFRicKernelMetadata.name, psyclone.domain.nemo.transformations.create_nemo_invoke_schedule_trans.CreateNemoInvokeScheduleTrans.name(), psyclone.domain.nemo.transformations.create_nemo_psy_trans.CreateNemoPSyTrans.name(), psyclone.domain.nemo.transformations.nemo_allarrayrange2loop_trans.NemoAllArrayRange2LoopTrans.name(), psyclone.domain.nemo.transformations.nemo_arrayrange2loop_trans.NemoArrayRange2LoopTrans.name(), psyclone.domain.nemo.transformations.nemo_outerarrayrange2loop_trans.NemoOuterArrayRange2LoopTrans.name(), psyclone.dynamo0p3.DynamoPSy.name(), psyclone.expression.FunctionVar.name, psyclone.expression.NamedArg.name(), psyclone.gocean1p0.GOKernelGridArgument.name(), psyclone.gocean1p0.GOStencil.name(), psyclone.parse.algorithm.FileInfo.name(), psyclone.parse.algorithm.InvokeCall.name(), psyclone.parse.kernel.KernelProcedure.name(), psyclone.parse.kernel.KernelType.name(), psyclone.parse.module_info.ModuleInfo.name(), psyclone.psyad.transformations.assignment_trans.AssignmentTrans.name(), psyclone.psyGen.PSy.name(), psyclone.psyGen.Invoke.name(), psyclone.psyGen.Kern.name(), psyclone.psyGen.CodedKern.name, psyclone.psyGen.Argument.name(), psyclone.psyGen.Transformation.name(), psyclone.psyGen.DummyTransformation.name(), psyclone.psyir.nodes.container.Container.name, psyclone.psyir.nodes.member.Member.name, psyclone.psyir.nodes.reference.Reference.name(), psyclone.psyir.nodes.routine.Routine.name, psyclone.psyir.symbols.symbol.Symbol.name(), psyclone.psyir.transformations.allarrayaccess2loop_trans.AllArrayAccess2LoopTrans.name(), psyclone.psyir.transformations.arrayrange2loop_trans.ArrayRange2LoopTrans.name(), psyclone.psyir.transformations.fold_conditional_return_expressions_trans.FoldConditionalReturnExpressionsTrans.name(), psyclone.psyir.transformations.loop_trans.LoopTrans.name(), psyclone.psyir.transformations.omp_task_trans.OMPTaskTrans.name(), psyclone.psyir.transformations.psy_data_trans.PSyDataTrans.name(), psyclone.transformations.OMPSingleTrans.name(), psyclone.transformations.OMPMasterTrans.name(), psyclone.transformations.OMPParallelTrans.name(), psyclone.transformations.MoveTrans.name(), psyclone.transformations.Dynamo0p3AsyncHaloExchangeTrans.name(), psyclone.transformations.Dynamo0p3KernelConstTrans.name(), psyclone.transformations.ACCEnterDataTrans.name(), psyclone.transformations.ACCRoutineTrans.name(), psyclone.transformations.ACCKernelsTrans.name(), psyclone.transformations.ACCDataTrans.name(), psyclone.transformations.KernelImportsToArguments.name(), and psyclone.domain.lfric.lfric_kern.LFRicKern.QRRule.
def psyclone.domain.lfric.lfric_kern.LFRicKern.mesh | ( | self | ) |
:returns: the mesh properties required by this kernel. :rtype: :py:class`psyclone.dynamo0p3.MeshPropertiesMetaData`
Definition at line 530 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._mesh_properties, and psyclone.domain.lfric.metadata_to_arguments_rules.MetadataToArgumentsRules._mesh_properties().
def psyclone.domain.lfric.lfric_kern.LFRicKern.ncolours_var | ( | self | ) |
Getter for the name of the variable holding the number of colours associated with this kernel call. :return: name of the variable holding the number of colours :rtype: Optional[str] :raises InternalError: if this kernel is not coloured.
Definition at line 459 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._intergrid_ref, psyclone.psyGen.Kern.is_coloured(), psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.is_intergrid(), psyclone.domain.lfric.lfric_kern.LFRicKern.is_intergrid(), psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata.is_intergrid(), psyclone.psyir.nodes.node.Node.scope(), and psyclone.psyir.symbols.symbol_table.SymbolTable.scope().
def psyclone.domain.lfric.lfric_kern.LFRicKern.qr_required | ( | self | ) |
:return: True if this kernel requires quadrature, else returns False. :rtype: bool
Definition at line 492 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._basis_required, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.qr_rules, and psyclone.domain.lfric.lfric_kern.LFRicKern.qr_rules().
def psyclone.domain.lfric.lfric_kern.LFRicKern.qr_rules | ( | self | ) |
:return: details of each of the quadrature rules required by this \ kernel. :rtype: OrderedDict containing \ :py:class:`psyclone.domain.lfric.LFRicKern.QRRule` indexed by \ quadrature shape.
Definition at line 369 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._qr_rules.
def psyclone.domain.lfric.lfric_kern.LFRicKern.reference_accesses | ( | self, | |
var_accesses | |||
) |
Get all variable access information. All accesses are marked according to the kernel metadata :param var_accesses: VariablesAccessInfo instance that stores the \ information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.psyGen.Kern.
Definition at line 119 of file lfric_kern.py.
def psyclone.domain.lfric.lfric_kern.LFRicKern.reference_element | ( | self | ) |
:returns: the reference-element properties required by this kernel. :rtype: :py:class:`psyclone.dynamo0p3.RefElementMetaData`
Definition at line 522 of file lfric_kern.py.
References psyclone.domain.lfric.kernel.meta_ref_element_arg_metadata.MetaRefElementArgMetadata._reference_element, and psyclone.domain.lfric.lfric_kern.LFRicKern._reference_element.
def psyclone.domain.lfric.lfric_kern.LFRicKern.validate_global_constraints | ( | self | ) |
Perform validation checks for any global constraints (that require the tree to be complete). :raises GenerationError: if this kernel does not have a supported operates-on (currently only "cell_column"). :raises GenerationError: if the loop goes beyond the level 1 halo and an operator is accessed. :raises GenerationError: if a kernel in the loop has an inc access and the loop is not coloured but is within an OpenMP parallel region.
Definition at line 883 of file lfric_kern.py.
References psyclone.psyir.nodes.node.Node.ancestor(), psyclone.psyGen.CodedKern.incremented_arg(), psyclone.psyGen.Kern.is_coloured(), psyclone.psyir.nodes.node.Node.is_openmp_parallel(), psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.iterates_over, psyclone.parse.kernel.KernelType.iterates_over(), and psyclone.psyGen.Kern.iterates_over().
def psyclone.domain.lfric.lfric_kern.LFRicKern.validate_kernel_code_args | ( | self, | |
table | |||
) |
Check that the arguments in the kernel code match the expected arguments as defined by the kernel metadata and the LFRic API. :param table: the symbol table to validate against the metadata. :type table: :py:class:`psyclone.psyir.symbols.SymbolTable` :raises GenerationError: if the number of arguments indicated by the \ kernel metadata doesn't match the actual number of arguments in \ the symbol table.
Definition at line 711 of file lfric_kern.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._validate_kernel_code_arg(), psyclone.psyGen.Kern.arguments(), and psyclone.psyir.nodes.call.Call.arguments().
|
static |
Definition at line 75 of file lfric_kern.py.