loki.transformations.single_column.devector
Classes
|
A |
|
A set of utilities that can be used to strip vector loops from a |
- 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.
- 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.