optimization_config
OptimizationConfig
dataclass
Configuration for running the full-program optimization
gpu = field(default_factory=GPU)
class-attribute
instance-attribute
GPU-only optimization options
hint = OptimizationHint.AUTO
class-attribute
instance-attribute
Hint for all optimizations passes
serial_cpu_vectorization = OptimizationOption.AUTO
class-attribute
instance-attribute
Series of transformed aimed at helping the generic compiler do auto-vectorization for AVX instructions.
stree = field(default_factory=Tree)
class-attribute
instance-attribute
Schedule Tree optimization options
GPU
dataclass
Optimization dedicated for GPU
common_gpu_xforms = False
class-attribute
instance-attribute
DaCe common xforms bundled in apply_gpu_transformations
Tree
dataclass
Optimization using the Schedule Tree IR
enabled = os.getenv('NDSL_STREE_OPT', 'False').lower() == 'true'
class-attribute
instance-attribute
Enable Schedule Tree transformations.
inline_K_loops_size_one = False
class-attribute
instance-attribute
"Remove serial for loops of size one in the K-axis.
kernelize = OptimizationOption.AUTO
class-attribute
instance-attribute
Enable maximizing 3-axis kernelization by duplicating maps.
merger = field(default_factory=Merger)
class-attribute
instance-attribute
Configuration object for cartesian axis merging.
refine_transients = True
class-attribute
instance-attribute
Reduce dimensionality of transient arrays based on their usage.
Merger
dataclass
align_lhs_on_center_horizontal = False
class-attribute
instance-attribute
Attempt on aligning the LHS for I and J axis on center so we can further merging. EXPERIMENTAL, therefore defaulting to False.
align_lhs_on_center_vertical = False
class-attribute
instance-attribute
Attempt on aligning the LHS for K axis on center so we can further merging. EXPERIMENTAL, therefore defaulting to False.
enabled = True
class-attribute
instance-attribute
Enable cartesian axis merging.
order = 'default'
class-attribute
instance-attribute
Allows to manually override the merging order (e.g. KJI will merge K, then J, then I).
The default follows loop order of the backend given to CartesianMerge.
overcompute_horizontal = False
class-attribute
instance-attribute
When merging allow horizontal maps (I and J) of different sizes to
merge by inserting an if guard.
overcompute_vertical = True
class-attribute
instance-attribute
When merging allow vertical maps (K) of different sizes to merge by inserting an if guard.
concretize(backend)
Concretize the remaining AUTO argument based on various metric.
is_concretized()
Return whether no nested configuration contains an automatic hint.
OptimizationHint
Bases: Enum
Hint for the configuration system that will drive the OptimizationOption.AUTO value
AUTO = enum.auto()
class-attribute
instance-attribute
Automatic strategy resolved by querying software and hardware capabilities
PARALLEL = enum.auto()
class-attribute
instance-attribute
Suitable for GPU or many-thread (parallelization) CPU strategy.
SERIAL = enum.auto()
class-attribute
instance-attribute
Suitable for many-cores (serial) CPU strategy.
OptimizationOption
Bases: Enum
Options for configuration element. AUTO will rely on the best guess default
APPLY = 1
class-attribute
instance-attribute
Pass will always be applied
AUTO = 2
class-attribute
instance-attribute
Best guess relying on the OptimizationHint
DO_NOT_APPLY = 0
class-attribute
instance-attribute
Pass will never be applied