Version history

0.7.0 (in development)

0.6.0 (13 Sep 2025)

Changed

  • Removed ArrayMetadataLike, use the strict ArrayMetadata instead. (PR_20)

  • Removed None variant for compiler_options and constant_arrays, use an empty list instead. (PR_20)

  • Module discovery is now fully automatic and does not need __process_modules__() to be defined in user classes. (PR_21)

  • Snippet.from_string() now takes an iterable of argument names. (PR_23)

  • Dynamic API imports (cuda_api, opencl_api, any_api) removed in favor of API static methods. (PR_25)

Added

  • Export DeviceParameters and BoundDevice. (PR_20)

  • AsArrayMetadata ABC. (PR_20)

  • ArrayMetadata.with_() method. (PR_20)

  • Cache kernels when using PyOpenCL backend. (PR_20)

0.5.0 (31 Jul 2024)

Changed

  • local_mem keyword parameter of kernel calls renamed to cu_dynamic_local_mem. (PR_17)

  • Renamed no_async keyword parameter to sync. (PR_18)

Added

  • Made ArrayMetadata public. (PR_18)

  • metadata attribute to Array. (PR_18)

  • ArrayMetadata.buffer_size, span, min_offset, first_element_offset, and get_sub_region(); Array.minimum_subregion(). (PR_18)

0.4.0 (25 Jul 2024)

Changed

  • Minimal Python version bumped to 3.10, and numpy to 2.0. (PR_12)

  • Refactored alignment logic to avoid inconsistent behavior and redundant calls. (PR_13)

  • Array does not support empty shape anymore. (PR_13)

  • dtypes.flatten_dtype returns FieldInfo objects. (PR_13)

Added

  • Array.empty_like(). (PR_13)

  • DeviceParams.align_words(). (PR_13)

Fixed

  • Array.from_host() is now synchronous if the device is given as the first parameter. (PR_13)

  • Mako tracebacks are shown render error. (PR_13)

0.3.0 (29 Jan 2023)

Changed

  • device_idx parameters are gone; now high level functions take BoundDevice or BoundMultiDevice arguments to indicate which devices to use; these objects include the corresponding contexts as well, so they don’t have to be passed separately.

  • Now API adapters only use device indices in a sense of “device index in the platform”; context adapters keep internal objects in dictionaries indexed by these indices, instead of in lists.

  • py.test plugin extracted into a separate package (pytest-grunnur).

0.2.0 (10 Mar 2021)

Changed

  • Arrays don’t hold queues any more; they are passed explicitly to get() or set().

  • Prepared kernels don’t hold queues any more; they are passed on call.

  • Queue now stands for a single-device queue only; multi-device queues are extracted into MultiQueue.

Added

  • MultiArray to simplify simultaneous kernel execution on multiple devices.

0.1.1 (9 Oct 2020)

Package build fixed.

0.1.0 (9 Oct 2020)

Initial version