Reference Guide
2.5.0
|
Public Member Functions | |
def | __init__ (self) |
def | __str__ (self) |
def | reference_accesses (self, var_accesses) |
def | load (self, call, parent=None) |
def | undf_name (self) |
def | qr_required (self) |
def | reference_element (self) |
def | cma_operation (self) |
def | is_intergrid (self) |
def | fs_descriptors (self) |
def | get_dof_loop_index_symbol (self) |
def | get_indexed_field_argument_references (self) |
def | get_scalar_argument_references (self) |
Public Member Functions inherited from psyclone.psyGen.BuiltIn | |
def | dag_name (self) |
def | load (self, call, arguments, parent=None) |
def | local_vars (self) |
Public Member Functions inherited from psyclone.psyGen.Kern | |
def | __init__ (self, parent, call, name, ArgumentsClass, check=True) |
def | args (self) |
def | node_str (self, colour=True) |
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 | gen_code (self, parent) |
Static Public Member Functions | |
def | metadata () |
Public Attributes | |
qr_rules | |
mesh | |
arg_descriptors | |
Abstract base class for a node representing a call to an LFRic built-in. :raises NotImplementedError: if a subclass of this abstract class \ does not set the value of '_datatype'.
Definition at line 156 of file lfric_builtins.py.
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.cma_operation | ( | self | ) |
Built-ins do not perform operations with Column-Matrix-Assembly operators. :returns: None :rtype: NoneType
Definition at line 401 of file lfric_builtins.py.
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.fs_descriptors | ( | self | ) |
:returns: a list of function space descriptor objects which \ contain information about the function spaces. :rtype: list of :py:class:`psyclone.dynamo0p3.FSDescriptor`
Definition at line 424 of file lfric_builtins.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_builtins.LFRicBuiltIn.get_dof_loop_index_symbol | ( | self | ) |
Finds or creates the symbol representing the index in any loops over DoFs. :returns: symbol representing the DoF loop index. :rtype: :py:class:`psyclone.psyir.symbols.DataSymbol`
Definition at line 433 of file lfric_builtins.py.
References psyclone.psyir.nodes.node.Node.scope(), and psyclone.psyir.symbols.symbol_table.SymbolTable.scope().
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_indexed_field_argument_references | ( | self | ) |
Creates a DoF-indexed StructureReference for each of the field arguments to this Built-In kernel. e.g. if the kernel has a field argument named 'fld1' then this routine will create an ArrayReference for 'fld1_data(df)' where 'df' is the DoF-loop variable and 'fld1_data' is the pointer to the data array within the fld1 object. :returns: a reference to the 'df'th element of each kernel argument that is a field. :rtype: List[:py:class:`psyclone.psyir.nodes.ArrayReference`]
Definition at line 448 of file lfric_builtins.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._arguments, psyclone.psyGen.Kern._arguments, psyclone.psyGen.InlinedKern._arguments, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_dof_loop_index_symbol(), psyclone.psyir.nodes.node.Node.scope(), and psyclone.psyir.symbols.symbol_table.SymbolTable.scope().
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_scalar_argument_references | ( | self | ) |
Finds or creates either a Reference (for a symbol) or PSyIR (for a literal expression) for any scalar arguments to this Built-In kernel. :returns: a Reference or PSyIR expression for each scalar kernel argument. :rtype: list of subclasses of `:py:class:`psyclone.psyir.nodes.Node`
Definition at line 475 of file lfric_builtins.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._arguments, psyclone.psyGen.Kern._arguments, psyclone.psyGen.InlinedKern._arguments, and psyclone.psyir.nodes.node.Node.replace_with().
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.is_intergrid | ( | self | ) |
We don't have any inter-grid built-ins. :returns: False :rtype: bool
Definition at line 413 of file lfric_builtins.py.
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.load | ( | self, | |
call, | |||
parent = None |
|||
) |
Populate the state of this object using the supplied call object. :param call: The BuiltIn object from which to extract information \ about this built-in call. :type call: :py:class:`psyclone.parse.algorithm.BuiltInCall` :param parent: The parent node of the kernel call in the PSyIR \ we are constructing. This will be a loop. :type parent: :py:class:`psyclone.domain.lfric.LFRicLoop`
Definition at line 258 of file lfric_builtins.py.
References 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_builtins.LFRicBuiltIn._idx_name, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._validate(), psyclone.domain.lfric.lfric_kern_metadata.LFRicKernMetadata._validate(), psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.arg_descriptors, psyclone.parse.kernel.KernelType.arg_descriptors(), psyclone.psyGen.Kern.arg_descriptors(), psyclone.psyGen.CodedKern.arg_descriptors, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_dof_loop_index_symbol(), psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.iterates_over, psyclone.parse.kernel.KernelType.iterates_over(), psyclone.psyGen.Kern.iterates_over(), 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_loop_trans.CreateNemoLoopTrans.name(), psyclone.domain.nemo.transformations.create_nemo_psy_trans.CreateNemoPSyTrans.name(), psyclone.domain.nemo.transformations.nemo_allarrayaccess2loop_trans.NemoAllArrayAccess2LoopTrans.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.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(), and psyclone.transformations.KernelImportsToArguments.name().
|
static |
Must be overridden by subclass.
Definition at line 181 of file lfric_builtins.py.
References psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAPlusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncAPlusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusAYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXMinusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAMinusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncAMinusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXMinusAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAXMinusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXMinusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicAXMinusBYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXTimesYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXTimesYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncAXTimesYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicATimesXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncATimesXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXDividebyYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXDividebyAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicADividebyXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncADividebyXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXPowrealAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncXPowintNKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicSetvalCKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicSetvalXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicSetvalRandomKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicSumXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicSignXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicMaxAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncMaxAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicMinAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIncMinAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicRealToIntXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicRealToRealXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXPlusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntAPlusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncAPlusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntXMinusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXMinusYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntAMinusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncAMinusXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntXMinusAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXMinusAKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntXTimesYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXTimesYKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntATimesXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncATimesXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntSetvalCKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntSetvalXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntSignXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntMaxAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncMaxAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntMinAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntIncMinAXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicIntToRealXKern._case_name, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXPlusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAPlusXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncAPlusXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAXPlusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAXPlusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAXPlusAYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXMinusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAMinusXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncAMinusXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXMinusAKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusAKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAXMinusYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXMinusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicAXMinusBYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXTimesYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXTimesYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncAXTimesYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicATimesXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncATimesXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXDividebyYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXDividebyAKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyAKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicADividebyXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncADividebyXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXPowrealAKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncXPowintNKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicSetvalCKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicSetvalXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicSetvalRandomKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductYKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicSumXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicSignXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicMaxAXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncMaxAXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicMinAXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIncMinAXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicRealToIntXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicRealToRealXKern.metadata(), psyclone.domain.lfric.lfric_builtins.LFRicIntToRealXKern.metadata(), psyclone.domain.gocean.kernel.psyir.GOceanContainer.metadata(), and psyclone.domain.lfric.kernel.psyir.LFRicKernelContainer.metadata().
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.qr_required | ( | self | ) |
Built-ins do not currently require quadrature. :returns: False :rtype: bool
Definition at line 379 of file lfric_builtins.py.
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.reference_accesses | ( | self, | |
var_accesses | |||
) |
Get all variable access information from this node. The assigned-to variable will be set to 'WRITE'. :param var_accesses: VariablesAccessInfo instance that stores the \ information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo` :raises InternalError: if an unsupported argument type is encountered.
Reimplemented from psyclone.psyGen.Kern.
Definition at line 217 of file lfric_builtins.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(), psyclone.psyir.nodes.node.Node.args(), psyclone.psyir.nodes.node.Node.scope(), and psyclone.psyir.symbols.symbol_table.SymbolTable.scope().
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.reference_element | ( | self | ) |
Built-ins do not require reference-element properties. :returns: None :rtype: NoneType
Definition at line 390 of file lfric_builtins.py.
def psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.undf_name | ( | self | ) |
Dynamically looks up the name of the 'undf' variable for the space that this kernel updates. :returns: the name of the undf variable. :rtype: str
Definition at line 366 of file lfric_builtins.py.
References psyclone.domain.lfric.lfric_kern.LFRicKern._arguments, psyclone.psyGen.Kern._arguments, and psyclone.psyGen.InlinedKern._arguments.