From 44ddc13f979efaa71db461ae7ae5cd31e96c6b8c Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 15:13:52 +0200 Subject: [PATCH 1/6] Set dpctl version to the latest release 0.22.0 --- conda-recipe/meta.yaml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 956ff6db0133..791756568635 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -1,6 +1,6 @@ {% set max_compiler_and_mkl_version = environ.get("MAX_BUILD_CMPL_MKL_VERSION", "2027.0a0") %} {% set required_compiler_and_mkl_version = "2025.0" %} -{% set required_dpctl_version = "0.22.0*" %} +{% set required_dpctl_version = "0.22.0" %} {% set pyproject = load_file_data('pyproject.toml') %} {% set py_build_deps = pyproject.get('build-system', {}).get('requires', []) %} diff --git a/pyproject.toml b/pyproject.toml index 02567d2f25ad..0a8d2f5a85f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ requires = [ "cmake>=3.31.6", "cython>=3.0.12", # WARNING: use only dpctl version available on PyPi - "dpctl>=0.20.0", + "dpctl>=0.22.0", "ninja>=1.11.1; platform_system!='Windows'", # NOTE: no DPNP restriction on NumPy version, so follow NumPy's drop schedule "numpy>=1.26.0", From f988404794196addd7da32f103ecf2e1bf2f20f6 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 15:15:22 +0200 Subject: [PATCH 2/6] Get rid of dependency on dev dpctl tag in the tests --- .../cupy/core_tests/test_ndarray_elementwise_op.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py b/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py index 881bb9979cc4..8e97d1175461 100644 --- a/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py +++ b/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py @@ -625,11 +625,11 @@ def check_array_boolarray_op(self, op, xp, x_type): b = xp.array([[3, 1, 4], [-1, -5, -9]], numpy.int8).view(bool) return op(a, b) - @testing.with_requires("dpctl>=0.22.0dev0") + @testing.with_requires("dpctl>=0.22.0") def test_add_array_boolarray(self): self.check_array_boolarray_op(operator.add) - @testing.with_requires("dpctl>=0.22.0dev0") + @testing.with_requires("dpctl>=0.22.0") def test_iadd_array_boolarray(self): self.check_array_boolarray_op(operator.iadd) From c62cf71c229fe63d4294caf4ae393021123f704e Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 15:17:25 +0200 Subject: [PATCH 3/6] Bump dependency on DPC++ compiler and oneMKL --- .github/workflows/conda-package.yml | 4 ++-- conda-recipe/meta.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index afd34ee00543..fbee35bb6238 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -93,13 +93,13 @@ jobs: continue-on-error: true run: conda build --no-test --python ${{ matrix.python }} --numpy 2.0 ${{ env.channels-list }} conda-recipe env: - MAX_BUILD_CMPL_MKL_VERSION: '2026.0a0' + MAX_BUILD_CMPL_MKL_VERSION: '2027.0a0' - name: ReBuild conda package if: steps.build_conda_pkg.outcome == 'failure' run: conda build --no-test --python ${{ matrix.python }} --numpy 2.0 ${{ env.channels-list }} conda-recipe env: - MAX_BUILD_CMPL_MKL_VERSION: '2026.0a0' + MAX_BUILD_CMPL_MKL_VERSION: '2027.0a0' - name: Upload artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 791756568635..f15818fdf398 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -1,5 +1,5 @@ {% set max_compiler_and_mkl_version = environ.get("MAX_BUILD_CMPL_MKL_VERSION", "2027.0a0") %} -{% set required_compiler_and_mkl_version = "2025.0" %} +{% set required_compiler_and_mkl_version = "2026.0" %} {% set required_dpctl_version = "0.22.0" %} {% set pyproject = load_file_data('pyproject.toml') %} From 3df87095f0f1372d694c86f86ea69ea510c1a29e Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 15:19:17 +0200 Subject: [PATCH 4/6] Set the release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdcf246a2c9c..6a1ed5de2da6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.20.0] - MM/DD/2026 +## [0.20.0] - 2026-04-22 This release introduces a major architectural change: the Array API-compliant tensor implementation has been migrated from `dpctl.tensor` into `dpnp.tensor`, simplifying maintenance, reducing cross-project dependencies, and allows the tensor implementation to evolve within `dpnp`. This release changes the license from `BSD-2-Clause` to `BSD-3-Clause`. From bbea35814455fdea6f03a4119de8f8e10884cab5 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 15:25:19 +0200 Subject: [PATCH 5/6] Fix link error --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a1ed5de2da6..e7e13fbe394e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,7 @@ Also, that release drops support for Python 3.9, making Python 3.10 the minimum * Added implementation of `dpnp.divmod` [#2674](https://github.com/IntelPython/dpnp/pull/2674) * Added implementation of `dpnp.isin` function [#2595](https://github.com/IntelPython/dpnp/pull/2595) * Added implementation of `dpnp.scipy.linalg.lu` (SciPy-compatible) [#2787](https://github.com/IntelPython/dpnp/pull/2787) -* Added support for ndarray subclassing via `dpnp.ndarray.view` method with `type` parameter [#2815](https://github.com/IntelPython/dpnp/issues/2815) +* Added support for ndarray subclassing via `dpnp.ndarray.view` method with `type` parameter [#2815](https://github.com/IntelPython/dpnp/pull/2815) * Migrated tensor implementation from `dpctl.tensor` into `dpnp.tensor`, making `dpnp` the primary owner of the Array API-compliant tensor layer [#2856](https://github.com/IntelPython/dpnp/pull/2856) ### Changed From bd8580942970a64e63937f1d8afea0bd9345951a Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Wed, 22 Apr 2026 20:24:24 +0200 Subject: [PATCH 6/6] No need to place dependency on dpctl version in the tests --- .../third_party/cupy/core_tests/test_ndarray_elementwise_op.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py b/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py index 8e97d1175461..4aeae669d8d5 100644 --- a/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py +++ b/dpnp/tests/third_party/cupy/core_tests/test_ndarray_elementwise_op.py @@ -625,11 +625,9 @@ def check_array_boolarray_op(self, op, xp, x_type): b = xp.array([[3, 1, 4], [-1, -5, -9]], numpy.int8).view(bool) return op(a, b) - @testing.with_requires("dpctl>=0.22.0") def test_add_array_boolarray(self): self.check_array_boolarray_op(operator.add) - @testing.with_requires("dpctl>=0.22.0") def test_iadd_array_boolarray(self): self.check_array_boolarray_op(operator.iadd)