Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ dace-cartesian = [
'dace>=1.0.2' # refined in [tool.uv.sources]
]
dace-next = [
'dace==43!2026.04.20' # uses custom index at 'https://github.com/GridTools/pypi'
'dace>=1.0.2' # refined in [tool.uv.sources]
]
dev = [
{include-group = 'build'},
Expand Down Expand Up @@ -485,7 +485,7 @@ url = 'https://gridtools.github.io/pypi/'
atlas4py = {index = "test.pypi"}
dace = [
{git = "https://github.com/GridTools/dace", branch = "romanc/stree-v2", group = "dace-cartesian"},
{index = "gridtools", group = "dace-next"}
{git = "https://github.com/GridTools/dace", branch = "min_warps_per_eu_next", group = "dace-next"}
]

# -- versioningit --
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ def gt_auto_optimize(
gpu_block_size_1d: Optional[Sequence[int | str] | str] = (64, 1, 1),
gpu_block_size_2d: Optional[Sequence[int | str] | str] = None,
gpu_block_size_3d: Optional[Sequence[int | str] | str] = None,
gpu_min_warps_per_eu: Optional[int] = None,
gpu_maxnreg: Optional[int] = None,
blocking_dim: Optional[gtx_common.Dimension] = None,
blocking_size: int = 10,
Expand Down Expand Up @@ -379,6 +380,7 @@ def gt_auto_optimize(
gpu_maxnreg=gpu_maxnreg,
optimization_hooks=optimization_hooks,
gpu_block_size_spec=gpu_block_size_spec if gpu_block_size_spec else None,
gpu_min_warps_per_eu=gpu_min_warps_per_eu,
validate_all=validate_all,
)

Expand Down Expand Up @@ -815,6 +817,7 @@ def _gt_auto_configure_maps_and_strides(
gpu_maxnreg: Optional[int],
optimization_hooks: dict[GT4PyAutoOptHook, GT4PyAutoOptHookFun],
gpu_block_size_spec: Optional[dict[str, Sequence[int | str] | str]],
gpu_min_warps_per_eu: Optional[int],
validate_all: bool,
) -> dace.SDFG:
"""Configure the Maps and the strides of the SDFG inplace.
Expand Down Expand Up @@ -889,6 +892,7 @@ def _gt_auto_configure_maps_and_strides(
gpu_launch_bounds=gpu_launch_bounds,
gpu_launch_factor=gpu_launch_factor,
gpu_block_size_spec=gpu_block_size_spec,
gpu_min_warps_per_eu=gpu_min_warps_per_eu,
gpu_maxnreg=gpu_maxnreg,
validate=False,
validate_all=validate_all,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def gt_gpu_transformation(
gpu_launch_bounds: Optional[int | str] = None,
gpu_launch_factor: Optional[int] = None,
gpu_block_size_spec: Optional[dict[str, Sequence[int | str] | str]] = None,
gpu_min_warps_per_eu: Optional[int] = None,
gpu_maxnreg: Optional[int] = None,
validate: bool = True,
validate_all: bool = False,
Expand Down Expand Up @@ -124,6 +125,7 @@ def gt_gpu_transformation(
launch_bounds=gpu_launch_bounds,
launch_factor=gpu_launch_factor,
**gpu_block_size_spec,
gpu_min_warps_per_eu=gpu_min_warps_per_eu,
gpu_maxnreg=gpu_maxnreg,
validate=False,
validate_all=validate_all,
Expand Down Expand Up @@ -365,6 +367,7 @@ def gt_set_gpu_blocksize(
block_size: Optional[Sequence[int | str] | str],
launch_bounds: Optional[int | str] = None,
launch_factor: Optional[int] = None,
gpu_min_warps_per_eu: Optional[int] = None,
gpu_maxnreg: Optional[int] = None,
validate: bool = True,
validate_all: bool = False,
Expand Down Expand Up @@ -397,6 +400,7 @@ def gt_set_gpu_blocksize(
}.items():
if f"{arg}_{dim}d" not in kwargs:
kwargs[f"{arg}_{dim}d"] = val
kwargs["gpu_min_warps_per_eu"] = gpu_min_warps_per_eu
kwargs["maxnreg"] = gpu_maxnreg

setter = GPUSetBlockSize(**kwargs)
Expand Down Expand Up @@ -595,6 +599,12 @@ class GPUSetBlockSize(dace_transformation.SingleStateTransformation):
default=None,
desc="Set the launch bound property for 3 dimensional map.",
)
min_warps_per_eu = dace_properties.Property(
dtype=int,
allow_none=True,
default=None,
desc="Set the minimum number of warps per EU for the GPU maps.",
)
maxnreg = dace_properties.Property(
dtype=int,
allow_none=True,
Expand All @@ -616,6 +626,7 @@ def __init__(
launch_factor_1d: int | None = None,
launch_factor_2d: int | None = None,
launch_factor_3d: int | None = None,
gpu_min_warps_per_eu: int | None = None,
maxnreg: int | None = None,
) -> None:
super().__init__()
Expand Down Expand Up @@ -644,6 +655,8 @@ def __init__(
self.launch_bounds_3d = _gpu_launch_bound_parser(
self.block_size_3d, launch_bounds_3d, launch_factor_3d
)
if gpu_min_warps_per_eu is not None:
self.min_warps_per_eu = gpu_min_warps_per_eu
if maxnreg is not None:
self.maxnreg = maxnreg

Expand Down Expand Up @@ -767,6 +780,8 @@ def apply(
elif launch_bounds is not None: # Note: empty string has a meaning in DaCe
gpu_map.gpu_launch_bounds = launch_bounds

if self.min_warps_per_eu:
gpu_map.gpu_min_warps_per_eu = self.min_warps_per_eu

def gt_remove_trivial_gpu_maps(
sdfg: dace.SDFG,
Expand Down
9 changes: 3 additions & 6 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading