Reference Guide
2.5.0
|
Public Member Functions | |
def | __init__ (self, field, check_dirty=True, vector_index=None, parent=None) |
def | required (self, ignore_hex_dep=False) |
def | node_str (self, colour=True) |
def | gen_code (self, parent) |
def | lower_to_language_level (self) |
Public Member Functions inherited from psyclone.psyGen.HaloExchange | |
def | vector_index (self) |
def | halo_depth (self) |
def | halo_depth (self, value) |
def | field (self) |
def | dag_name (self) |
def | args (self) |
def | check_vector_halos_differ (self, node) |
Additional Inherited Members | |
Public Attributes inherited from psyclone.psyGen.HaloExchange | |
vector_index | |
Dynamo specific halo exchange class which can be added to and manipulated in a schedule. :param field: the field that this halo exchange will act on :type field: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param check_dirty: optional argument default True indicating \ whether this halo exchange should be subject to a run-time check \ for clean/dirty halos. :type check_dirty: bool :param vector_index: optional vector index (default None) to \ identify which index of a vector field this halo exchange is \ responsible for :type vector_index: int :param parent: optional PSyIRe parent node (default None) of this \ object :type parent: :py:class:`psyclone.psyir.nodes.Node`
Definition at line 3796 of file dynamo0p3.py.
def psyclone.dynamo0p3.LFRicHaloExchange.gen_code | ( | self, | |
parent | |||
) |
Dynamo specific code generation for this class. :param parent: an f2pygen object that will be the parent of \ f2pygen objects created in this method :type parent: :py:class:`psyclone.f2pygen.BaseGen`
Definition at line 4197 of file dynamo0p3.py.
def psyclone.dynamo0p3.LFRicHaloExchange.lower_to_language_level | ( | self | ) |
:returns: this node lowered to language-level PSyIR. :rtype: :py:class:`psyclone.psyir.nodes.Node`
Definition at line 4207 of file dynamo0p3.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._field, psyclone.domain.lfric.arg_index_to_metadata_index.ArgIndexToMetadataIndex._field(), psyclone.domain.lfric.lfric_loop.LFRicLoop._field, psyclone.domain.lfric.metadata_to_arguments_rules.MetadataToArgumentsRules._field(), psyclone.psyGen.HaloExchange._field, psyclone.dynamo0p3.LFRicHaloExchange._halo_exchange_name, psyclone.dynamo0p3.LFRicHaloExchangeStart._halo_exchange_name, psyclone.dynamo0p3.LFRicHaloExchangeEnd._halo_exchange_name, psyclone.gocean1p0.GOHaloExchange._halo_exchange_name, psyclone.dynamo0p3.LFRicHaloExchange._psyir_depth_expression(), psyclone.dynamo0p3.LFRicHaloExchangeStart._psyir_depth_expression(), psyclone.psyir.nodes.node.Node.replace_with(), psyclone.dynamo0p3.LFRicHaloExchangeStart.required(), psyclone.dynamo0p3.LFRicHaloExchange.required(), and psyclone.psyGen.HaloExchange.vector_index.
def psyclone.dynamo0p3.LFRicHaloExchange.node_str | ( | self, | |
colour = True |
|||
) |
Creates a text summary of this HaloExchange node. :param bool colour: whether or not to include control codes for colour. :returns: text summary of this node, optionally with control codes \ for colour highlighting. :rtype: str
Reimplemented from psyclone.psyGen.HaloExchange.
Definition at line 4177 of file dynamo0p3.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._field, psyclone.domain.lfric.arg_index_to_metadata_index.ArgIndexToMetadataIndex._field(), psyclone.domain.lfric.lfric_loop.LFRicLoop._field, psyclone.domain.lfric.metadata_to_arguments_rules.MetadataToArgumentsRules._field(), psyclone.psyGen.HaloExchange._field, psyclone.dynamo0p3.LFRicHaloExchangeStart.required(), psyclone.dynamo0p3.LFRicHaloExchange.required(), and psyclone.psyGen.HaloExchange.vector_index.
def psyclone.dynamo0p3.LFRicHaloExchange.required | ( | self, | |
ignore_hex_dep = False |
|||
) |
Determines whether this halo exchange is definitely required ``(True, True)``, might be required ``(True, False)`` or is definitely not required ``(False, *)``. If the optional ignore_hex_dep argument is set to True then any read accesses contained in halo exchange nodes are ignored. This option can therefore be used to filter out any halo exchange dependencies and only consider non-halo exchange dependencies if and when required. Whilst a halo exchange is generally only ever added if it is required, or if it may be required, this situation can change if redundant computation transformations are applied. The first argument can be used to remove such halo exchanges if required. When the first return value is True, the second return value can be used to see if we need to rely on the runtime (set_dirty and set_clean calls) and therefore add a check_dirty() call around the halo exchange or whether we definitely know that this halo exchange is required. This routine assumes that a stencil size provided via a variable may take the value 0. If a variables value is constrained to be 1, or more, then the logic for deciding whether a halo exchange is definitely required should be updated. Note, the routine would still be correct as is, it would just return more unknown results than it should). :param bool ignore_hex_dep: if True then ignore any read \ accesses contained in halo exchanges. This is an optional \ argument that defaults to False. :returns: (x, y) where x specifies whether this halo \ exchange is (or might be) required - True, or is not \ required - False. If the first tuple item is True then the \ second argument specifies whether we definitely know that \ we need the HaloExchange - True, or are not sure - False. :rtype: (bool, bool)
Definition at line 4002 of file dynamo0p3.py.
References psyclone.dynamo0p3.LFRicHaloExchange._compute_halo_read_depth_info(), and psyclone.dynamo0p3.LFRicHaloExchange._compute_halo_write_info().