loki.transformations.parallel.openmp_region
Sub-package with utilities to remove and manipulate parallel OpenMP regions.
Functions
|
Injects IFS-specific thread-local copies of named complex derived type objects in parallel regions. |
|
Add the OpenMP directives for a parallel driver region with an outer block loop. |
|
Removes an IFS-specific workaround, where complex derived-type objects are explicitly copied into a local copy of the object to avoid erroneous firstprivatisation in OpenMP loops. |
|
Remove any OpenMP parallel annotations ( |
- remove_openmp_regions(routine, insert_loki_parallel=False)
Remove any OpenMP parallel annotations (
!$omp parallel
).Optionally, this can replace
!$omp parallel
with!$loki parallel
pragmas.- Parameters:
routine (
Subroutine
) – The routine from which to strip all OpenMP annotations.insert_loki_parallel (bool) – Flag for the optional insertion of ``!$loki parallel` pragmas
- add_openmp_regions(routine, dimension, shared_variables=None, field_group_types=None)
Add the OpenMP directives for a parallel driver region with an outer block loop.
- Parameters:
routine (
Subroutine
) – The routine to which to add OpenMP parallel regions.dimension (
Dimension
) – The dimension object describing the block loop variables.shared_variables (tuple of str) – Names of variables that should neither be private nor firstprivate
field_group_types (tuple of str) – Names of types designating “field groups”, which should be treated as firstprivate
- remove_firstprivate_copies(region, fprivate_map, scope)
Removes an IFS-specific workaround, where complex derived-type objects are explicitly copied into a local copy of the object to avoid erroneous firstprivatisation in OpenMP loops.
- add_firstprivate_copies(routine, fprivate_map)
Injects IFS-specific thread-local copies of named complex derived type objects in parallel regions. This is to prevent issues with firstprivate variables in OpenMP loops.
- Parameters:
routine (
Subroutine
) – Subroutine in which to insert privatisation copiesfprivate_map (dict of (str, str)) – String mapping of local-to-global names for explicitly privatised objects