Skip to content

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