Reference Guide  2.5.0
psyclone.psyir.nodes.omp_directives.OMPSingleDirective Class Reference
Inheritance diagram for psyclone.psyir.nodes.omp_directives.OMPSingleDirective:
Collaboration diagram for psyclone.psyir.nodes.omp_directives.OMPSingleDirective:

Public Member Functions

def __init__ (self, nowait=False, **kwargs)
 
def nowait (self)
 
def gen_code (self, parent)
 
def begin_string (self)
 
def end_string (self)
 
- Public Member Functions inherited from psyclone.psyir.nodes.omp_directives.OMPSerialDirective
def lower_to_language_level (self)
 
def validate_global_constraints (self)
 
- Public Member Functions inherited from psyclone.psyir.nodes.directive.RegionDirective
def __init__ (self, ast=None, children=None, parent=None)
 
def dir_body (self)
 
def clauses (self)
 
def gen_post_region_code (self, parent)
 
- Public Member Functions inherited from psyclone.psyir.nodes.directive.Directive
def create_data_movement_deep_copy_refs (self)
 
- Public Member Functions inherited from psyclone.psyir.nodes.node.Node
def __init__ (self, ast=None, children=None, parent=None, annotations=None)
 
def __eq__ (self, other)
 
def coloured_name (self, colour=True)
 
def node_str (self, colour=True)
 
def __str__ (self)
 
def ast (self)
 
def ast_end (self)
 
def ast (self, ast)
 
def ast_end (self, ast_end)
 
def annotations (self)
 
def dag (self, file_name='dag', file_format='svg')
 
def dag_gen (self, graph)
 
def dag_name (self)
 
def args (self)
 
def backward_dependence (self)
 
def forward_dependence (self)
 
def is_valid_location (self, new_node, position="before")
 
def depth (self)
 
def view (self, depth=0, colour=True, indent=" ", _index=None)
 
def addchild (self, child, index=None)
 
def children (self)
 
def children (self, my_children)
 
def parent (self)
 
def siblings (self)
 
def has_constructor_parent (self)
 
def position (self)
 
def abs_position (self)
 
def root (self)
 
def sameParent (self, node_2)
 
def walk (self, my_type, stop_type=None, depth=None)
 
def get_sibling_lists (self, my_type, stop_type=None)
 
def ancestor (self, my_type, excluding=None, include_self=False, limit=None, shared_with=None)
 
def kernels (self)
 
def following (self, routine=True)
 
def preceding (self, reverse=False, routine=True)
 
def immediately_precedes (self, node_2)
 
def immediately_follows (self, node_1)
 
def coded_kernels (self)
 
def loops (self)
 
def reductions (self, reprod=None)
 
def is_openmp_parallel (self)
 
def reference_accesses (self, var_accesses)
 
def scope (self)
 
def replace_with (self, node, keep_name_in_context=True)
 
def pop_all_children (self)
 
def detach (self)
 
def copy (self)
 
def debug_string (self)
 
def origin_string (self)
 
def update_signal (self)
 
def path_from (self, ancestor)
 
- Public Member Functions inherited from psyclone.psyir.nodes.commentable_mixin.CommentableMixin
def preceding_comment (self)
 
def preceding_comment (self, comment)
 
def inline_comment (self)
 
def inline_comment (self, comment)
 

Additional Inherited Members

- Public Attributes inherited from psyclone.psyir.nodes.node.Node
 position
 
- Static Public Attributes inherited from psyclone.psyir.nodes.node.Node
int START_DEPTH = 0
 
int START_POSITION = 0
 
 valid_annotations = tuple()
 

Detailed Description

Class representing an OpenMP SINGLE directive in the PSyIR.

:param bool nowait: argument describing whether this single should have \
    a nowait clause applied. Default value is False.
:param kwargs: additional keyword arguments provided to the PSyIR node.
:type kwargs: unwrapped dict.

Definition at line 1113 of file omp_directives.py.

Member Function Documentation

◆ begin_string()

def psyclone.psyir.nodes.omp_directives.OMPSingleDirective.begin_string (   self)
Returns the beginning statement of this directive, i.e.
"omp single". The visitor is responsible for adding the
correct directive beginning (e.g. "!$").

:returns: the opening statement of this directive.
:rtype: str

Definition at line 1193 of file omp_directives.py.

1193  def begin_string(self):
1194  '''Returns the beginning statement of this directive, i.e.
1195  "omp single". The visitor is responsible for adding the
1196  correct directive beginning (e.g. "!$").
1197 
1198  :returns: the opening statement of this directive.
1199  :rtype: str
1200 
1201  '''
1202  return "omp single"
1203 
Here is the caller graph for this function:

◆ end_string()

def psyclone.psyir.nodes.omp_directives.OMPSingleDirective.end_string (   self)
Returns the end (or closing) statement of this directive, i.e.
"omp end single". The visitor is responsible for adding the
correct directive beginning (e.g. "!$").

:returns: the end statement for this directive.
:rtype: str

Definition at line 1204 of file omp_directives.py.

1204  def end_string(self):
1205  '''Returns the end (or closing) statement of this directive, i.e.
1206  "omp end single". The visitor is responsible for adding the
1207  correct directive beginning (e.g. "!$").
1208 
1209  :returns: the end statement for this directive.
1210  :rtype: str
1211 
1212  '''
1213  return "omp end single"
1214 
1215 
Here is the caller graph for this function:

◆ gen_code()

def psyclone.psyir.nodes.omp_directives.OMPSingleDirective.gen_code (   self,
  parent 
)
Generate the fortran OMP Single Directive and any associated
code

:param parent: the parent Node in the Schedule to which to add our \
               content.
:type parent: sub-class of :py:class:`psyclone.f2pygen.BaseGen`

Definition at line 1167 of file omp_directives.py.

1167  def gen_code(self, parent):
1168  '''Generate the fortran OMP Single Directive and any associated
1169  code
1170 
1171  :param parent: the parent Node in the Schedule to which to add our \
1172  content.
1173  :type parent: sub-class of :py:class:`psyclone.f2pygen.BaseGen`
1174  '''
1175  # Check the constraints are correct
1176  self.validate_global_constraints()
1177 
1178  # Capture the nowait section of the string if required
1179  nowait_string = ""
1180  if self._nowait:
1181  nowait_string = "nowait"
1182 
1183  parent.add(DirectiveGen(parent, "omp", "begin", "single",
1184  nowait_string))
1185 
1186  # Generate the code for all of this node's children
1187  for child in self.dir_body:
1188  child.gen_code(parent)
1189 
1190  # Generate the end code for this node
1191  parent.add(DirectiveGen(parent, "omp", "end", "single", ""))
1192 

References psyclone.psyir.nodes.omp_directives.OMPSingleDirective._nowait, psyclone.psyir.nodes.directive.RegionDirective.dir_body(), psyclone.domain.lfric.lfric_kern.LFRicKern.validate_global_constraints(), psyclone.psyir.nodes.acc_directives.ACCRegionDirective.validate_global_constraints(), psyclone.psyir.nodes.acc_directives.ACCLoopDirective.validate_global_constraints(), psyclone.psyir.nodes.acc_directives.ACCAtomicDirective.validate_global_constraints(), psyclone.psyir.nodes.node.Node.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPDeclareTargetDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPTaskwaitDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPSerialDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPParallelDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPTaskloopDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPDoDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPParallelDoDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPLoopDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPAtomicDirective.validate_global_constraints(), psyclone.psyir.nodes.omp_directives.OMPSimdDirective.validate_global_constraints(), and psyclone.psyir.nodes.omp_task_directive.OMPTaskDirective.validate_global_constraints().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nowait()

def psyclone.psyir.nodes.omp_directives.OMPSingleDirective.nowait (   self)
:returns: whether the nowait clause is specified for this directive.
:rtype: bool

Definition at line 1159 of file omp_directives.py.

1159  def nowait(self):
1160  '''
1161  :returns: whether the nowait clause is specified for this directive.
1162  :rtype: bool
1163 
1164  '''
1165  return self._nowait
1166 

References psyclone.psyir.nodes.omp_directives.OMPSingleDirective._nowait.


The documentation for this class was generated from the following file: