gt4py.storage package

Submodules

gt4py.storage.interface module

gt4py.storage.interface.dace_descriptor(shape: typing.Sequence[int], dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) dace.data.Array[source]

Return a DaCe data descriptor which describes performance-optimal strides and alignment.

Parameters
  • shape (Sequence of int) – The shape of the resulting data descriptor.

  • dtype (DTypeLike, optional) – The dtype encoded in the resulting data descriptor.

Keyword Arguments
  • backend (str) – The target backend for which the described allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the data descriptor. Only used for determining optimal strides, the information is not stored.

Returns

With strides that encode padding and aligned to provide optimal performance for the given backend and aligned_index

Return type

DaCe data descriptor

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.interface.empty(shape: typing.Sequence[int], dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) Union[numpy.ndarray, cp.ndarray][source]

Allocate an array of uninitialized (undefined) values with performance-optimal strides and alignment.

Parameters
  • shape (Sequence of int) – The shape of the resulting ndarray

  • dtype (DTypeLike, optional) – The dtype of the resulting ndarray

Keyword Arguments
  • backend (str) – The target backend for which the allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the provided array. Only used for determining optimal strides, the information is not stored.

Returns

With uninitialized values, padded and aligned to provide optimal performance for the given backend and aligned_index

Return type

NumPy or CuPy ndarray

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.interface.from_array(data: typing.Union[numpy._typing._array_like._SupportsArray[numpy.dtype], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[typing.Union[bool, int, float, complex, str, bytes]]], dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) Union[numpy.ndarray, cp.ndarray][source]

Allocate an array with values initialized to those of data with performance-optimal strides and alignment.

This copies the values from data to the resulting buffer.

Parameters
  • data (ArrayLike) – Source data to be copied, from which also the shape of the result is derived.

  • dtype (DTypeLike, optional) – The dtype of the resulting ndarray

Keyword Arguments
  • backend (str) – The target backend for which the allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the provided array. Only used for determining optimal strides, the information is not stored.

Returns

Copy of data, padded and aligned to provide optimal performance for the given backend and aligned_index

Return type

NumPy or CuPy ndarray

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.interface.full(shape: typing.Sequence[int], fill_value: numbers.Number, dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) Union[numpy.ndarray, cp.ndarray][source]

Allocate an array with values initialized to fill_value with performance-optimal strides and alignment.

Parameters
  • shape (Sequence of int) – The shape of the resulting ndarray

  • fill_value (numbers.Number) – The value to which the array elements are initialized.

  • dtype (DTypeLike, optional) – The dtype of the resulting ndarray

Keyword Arguments
  • backend (str) – The target backend for which the allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the provided array. Only used for determining optimal strides, the information is not stored.

Returns

Initialized to fill_value, padded and aligned to provide optimal performance for the given backend and aligned_index

Return type

NumPy or CuPy ndarray

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.interface.ones(shape: typing.Sequence[int], dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) Union[numpy.ndarray, cp.ndarray][source]

Allocate an array with values initialized to 1.0 with performance-optimal strides and alignment.

Parameters
  • shape (Sequence of int) – The shape of the resulting ndarray

  • dtype (DTypeLike, optional) – The dtype of the resulting ndarray

Keyword Arguments
  • backend (str) – The target backend for which the allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the provided array. Only used for determining optimal strides, the information is not stored.

Returns

Initialized to 1.0, padded and aligned to provide optimal performance for the given backend and aligned_index

Return type

NumPy or CuPy ndarray

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.interface.zeros(shape: typing.Sequence[int], dtype: typing.Union[numpy.dtype[typing.Any], None, typing.Type[typing.Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[typing.Any]], str, typing.Tuple[typing.Any, int], typing.Tuple[typing.Any, typing.Union[typing.SupportsIndex, typing.Sequence[typing.SupportsIndex]]], typing.List[typing.Any], numpy._typing._dtype_like._DTypeDict, typing.Tuple[typing.Any, typing.Any]] = <class 'numpy.float64'>, *, backend: str, aligned_index: typing.Optional[typing.Sequence[int]] = None, dimensions: typing.Optional[typing.Sequence[str]] = None) Union[numpy.ndarray, cp.ndarray][source]

Allocate an array with values initialized to 0.0 with performance-optimal strides and alignment.

Parameters
  • shape (Sequence of int) – The shape of the resulting ndarray

  • dtype (DTypeLike, optional) – The dtype of the resulting ndarray

Keyword Arguments
  • backend (str) – The target backend for which the allocation is optimized.

  • aligned_index (Sequence of int, optional) – Indicate the index of the resulting array that most commonly corresponds to the origin of the compute domain. If not passed, it is aligned at the data origin.

  • dimensions (Sequence of str, optional) – Indicate the semantic meaning of the dimensions in the provided array. Only used for determining optimal strides, the information is not stored.

Returns

Initialized to 0.0, padded and aligned to provide optimal performance for the given backend and aligned_index

Return type

NumPy or CuPy ndarray

Raises
  • TypeError – If arguments of an unexpected type are specified.

  • ValueError – If illegal or inconsistent arguments are specified.

gt4py.storage.layout module

class gt4py.storage.layout.LayoutInfo[source]

Bases: TypedDict

alignment: int
device: Literal['cpu', 'gpu']
is_optimal_layout: Callable[[Any, Tuple[str, ...]], bool]
layout_map: Callable[[Tuple[str, ...]], Tuple[Optional[int], ...]]
gt4py.storage.layout.check_layout(layout_map, strides)[source]
gt4py.storage.layout.from_name(name: str) Optional[gt4py.storage.layout.LayoutInfo][source]
gt4py.storage.layout.layout_checker_factory(layout_maker)[source]
gt4py.storage.layout.layout_maker_factory(base_layout: Tuple[int, ...]) Callable[[Tuple[str, ...]], Tuple[int, ...]][source]
gt4py.storage.layout.make_cuda_layout_map(dimensions: Tuple[str, ...]) Tuple[Optional[int], ...][source]
gt4py.storage.layout.make_gtcpu_ifirst_layout_map(dimensions: Tuple[str, ...]) Tuple[int, ...][source]
gt4py.storage.layout.make_gtcpu_kfirst_layout_map(dimensions: Tuple[str, ...]) Tuple[int, ...][source]
gt4py.storage.layout.register(name: str, info: Optional[gt4py.storage.layout.LayoutInfo]) None[source]

gt4py.storage.utils module

class gt4py.storage.utils.ArrayInterfaceType(*args, **kwargs)[source]

Bases: Protocol

class gt4py.storage.utils.CudaArrayInterfaceType(*args, **kwargs)[source]

Bases: Protocol

class gt4py.storage.utils.GtDimsInterface(*args, **kwargs)[source]

Bases: Protocol

class gt4py.storage.utils.GtOriginInterface(*args, **kwargs)[source]

Bases: Protocol

gt4py.storage.utils.allocate(aligned_index, shape, layout_map, dtype, alignment_bytes, allocate_f)[source]
gt4py.storage.utils.allocate_cpu(shape: Sequence[int], layout_map: Iterable[Optional[int]], dtype: Union[numpy.dtype[Any], None, Type[Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[Any]], str, Tuple[Any, int], Tuple[Any, Union[SupportsIndex, Sequence[SupportsIndex]]], List[Any], numpy._typing._dtype_like._DTypeDict, Tuple[Any, Any]], alignment_bytes: int, aligned_index: Optional[Sequence[int]]) Tuple[numpy.ndarray, numpy.ndarray][source]
gt4py.storage.utils.allocate_gpu(shape: Sequence[int], layout_map: Iterable[Optional[int]], dtype: Union[numpy.dtype[Any], None, Type[Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[Any]], str, Tuple[Any, int], Tuple[Any, Union[SupportsIndex, Sequence[SupportsIndex]]], List[Any], numpy._typing._dtype_like._DTypeDict, Tuple[Any, Any]], alignment_bytes: int, aligned_index: Optional[Sequence[int]]) Tuple[cp.ndarray, cp.ndarray][source]
gt4py.storage.utils.as_cupy(array: Union[cp.ndarray, numpy.ndarray, gt4py.storage.utils.ArrayInterfaceType, gt4py.storage.utils.CudaArrayInterfaceType]) cp.ndarray[source]
gt4py.storage.utils.as_numpy(array: Union[cp.ndarray, numpy.ndarray, gt4py.storage.utils.ArrayInterfaceType, gt4py.storage.utils.CudaArrayInterfaceType]) numpy.ndarray[source]
gt4py.storage.utils.compute_padded_shape(shape, items_per_alignment, order_idx)[source]
gt4py.storage.utils.cpu_copy(array: Union[numpy.ndarray, cp.ndarray])[source]
gt4py.storage.utils.dimensions_to_mask(dimensions: Tuple[str, ...]) Tuple[bool, ...][source]
gt4py.storage.utils.get_dims(obj: gt4py.storage.utils.GtDimsInterface) Optional[Tuple[str, ...]][source]
gt4py.storage.utils.get_origin(obj: gt4py.storage.utils.GtOriginInterface) Optional[Tuple[int, ...]][source]
gt4py.storage.utils.idx_from_order(order)[source]
gt4py.storage.utils.normalize_storage_spec(aligned_index: Optional[Sequence[int]], shape: Sequence[int], dtype: Union[numpy.dtype[Any], None, Type[Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[Any]], str, Tuple[Any, int], Tuple[Any, Union[SupportsIndex, Sequence[SupportsIndex]]], List[Any], numpy._typing._dtype_like._DTypeDict, Tuple[Any, Any]], dimensions: Optional[Sequence[str]]) Tuple[Sequence[int], Sequence[int], Union[numpy.dtype[Any], None, Type[Any], numpy._typing._dtype_like._SupportsDType[numpy.dtype[Any]], str, Tuple[Any, int], Tuple[Any, Union[SupportsIndex, Sequence[SupportsIndex]]], List[Any], numpy._typing._dtype_like._DTypeDict, Tuple[Any, Any]], Tuple[str, ...]][source]

Normalize the fields of the storage spec in a homogeneous representation.

Returns

The output tuple fields verify the following semantics:
  • aligned_index: tuple of ints with default origin values for the non-masked dimensions

  • shape: tuple of ints with shape values for the non-masked dimensions

  • dtype: scalar numpy.dtype (non-structured and without subarrays)

  • backend: backend identifier string (numpy, gt:cpu_kfirst, gt:gpu, …)

  • dimensions: a tuple of dimension identifier strings

Return type

tuple(aligned_index, shape, dtype, mask)

gt4py.storage.utils.strides_from_padded_shape(padded_size, order_idx, itemsize)[source]

Module contents

GridTools storages classes.