# loki.transformations.single_column.devector

Classes

`RemoveLoopTransformer`(dimension, *args, **kwargs) | A `Transformer` that removes all loops over the specified dimension.
`SCCDevectorTransformation`(horizontal[, ...]) | A set of utilities that can be used to strip vector loops from a `Subroutine` and determine the regions of the IR to be placed within thread-parallel loop directives.

class RemoveLoopTransformer(dimension, *args, **kwargs)

  Bases: `Transformer`

  A `Transformer` that removes all loops over the specified dimension.

  Parameters:

    horizontal (`Dimension`) – The dimension specifying the horizontal vector dimension

  visit_Loop(loop, **kwargs)

class SCCDevectorTransformation(horizontal, trim_vector_sections=False)

  Bases: `Transformation`

  A set of utilities that can be used to strip vector loops from a `Subroutine` and determine the regions of the IR to be placed within thread-parallel loop directives.

  Parameters:

    - horizontal (`Dimension`) – `Dimension` object describing the variable conventions used in code to define the horizontal data dimension and iteration space.

    - trim_vector_sections (bool) – Flag to trigger trimming of extracted vector sections to remove nodes that are not assignments involving vector parallel arrays.

  classmethod extract_vector_sections(section, horizontal)

    Extract a contiguous sections of nodes that contains vector-level computations and are not interrupted by recursive subroutine calls or nested control-flow structures.

    Parameters:

      - section (tuple of `Node`) – A section of nodes from which to extract vector-level sub-sections

      - horizontal (`Dimension`) – The dimension specifying the horizontal vector dimension

  classmethod get_trimmed_sections(routine, horizontal, sections)

    Trim extracted vector sections to remove nodes that are not assignments involving vector parallel arrays.

  transform_subroutine(routine, **kwargs)

    Apply SCCDevector utilities to a `Subroutine`.

    Parameters:

      - routine (`Subroutine`) – Subroutine to apply this transformation to.

      - role (string) – Role of the subroutine in the call tree; should be `"kernel"`

  process_kernel(routine)

    Applies the SCCDevector utilities to a “kernel”. This consists simply of stripping vector loops and determing which sections of the IR can be placed within thread-parallel loops.

    Parameters:

      routine (`Subroutine`) – Subroutine to apply this transformation to.

  process_driver(routine, targets=())

    Applies the SCCDevector utilities to a “driver”. This consists simply of stripping vector loops and determining which sections of the IR can be placed within thread-parallel loops.

    Parameters:

      - routine (`Subroutine`) – Subroutine to apply this transformation to.

      - targets (list or string) – List of subroutines that are to be considered as part of the transformation call tree.