From 7556d8b4e6b028b723a543475f1afc6a93ad5c00 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Thu, 7 May 2026 13:58:56 -0700 Subject: [PATCH 1/8] Switch to ocl-icd from conda-forge --- conda-recipe/meta.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index f15818fdf398..e2e719401115 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -51,7 +51,8 @@ requirements: - {{ pin_compatible('onemkl-sycl-rng', min_pin='x.x', max_pin='x') }} - {{ pin_compatible('onemkl-sycl-vm', min_pin='x.x', max_pin='x') }} - numpy - - intel-gpu-ocl-icd-system + - ocl-icd # [linux] + - khronos-opencl-icd-loader # [win] build: number: {{ GIT_DESCRIBE_NUMBER }} From 5ad0f780f773c775a99bbddf98cc42c0784dbb2b Mon Sep 17 00:00:00 2001 From: Anton <100830759+antonwolfy@users.noreply.github.com> Date: Thu, 7 May 2026 17:05:30 -0700 Subject: [PATCH 2/8] Update conda-recipe/meta.yaml Co-authored-by: ndgrigorian <46709016+ndgrigorian@users.noreply.github.com> --- conda-recipe/meta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index e2e719401115..4d5c70c21bb6 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -51,7 +51,7 @@ requirements: - {{ pin_compatible('onemkl-sycl-rng', min_pin='x.x', max_pin='x') }} - {{ pin_compatible('onemkl-sycl-vm', min_pin='x.x', max_pin='x') }} - numpy - - ocl-icd # [linux] + - ocl-icd-system # [linux] - khronos-opencl-icd-loader # [win] build: From 929fda84190c3774853b97f9114614bf0e2dfcaf Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 11:01:26 +0200 Subject: [PATCH 3/8] Update deps list in Quick start guide --- doc/quick_start_guide.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/quick_start_guide.rst b/doc/quick_start_guide.rst index 04d7af29f286..abc57a2ff603 100644 --- a/doc/quick_start_guide.rst +++ b/doc/quick_start_guide.rst @@ -95,7 +95,7 @@ On Linux: .. code-block:: bash conda create -n build-env dpctl cython dpcpp_linux-64 mkl-devel-dpcpp tbb-devel \ - onedpl-devel cmake scikit-build ninja versioneer pytest intel-gpu-ocl-icd-system \ + onedpl-devel cmake scikit-build ninja versioneer pytest ocl-icd-system \ -c dppy/label/dev -c https://software.repos.intel.com/python/conda/ -c conda-forge --override-channels conda activate build-env @@ -104,7 +104,7 @@ On Windows: .. code-block:: bash conda create -n build-env dpctl cython dpcpp_win-64 mkl-devel-dpcpp tbb-devel \ - onedpl-devel cmake scikit-build ninja versioneer pytest intel-gpu-ocl-icd-system \ + onedpl-devel cmake scikit-build ninja versioneer pytest khronos-opencl-icd-loader\ -c dppy/label/dev -c https://software.repos.intel.com/python/conda/ -c conda-forge --override-channels conda activate build-env From 7ee64ff143658f6f3d8889fb65d990f78099ee73 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 11:03:41 +0200 Subject: [PATCH 4/8] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00ebb5950759..a19086ee8e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ This release is compatible with NumPy 2.5. * Removed dead code branches guarded by outdated oneMKL and DPC++ compiler version checks [#2999](https://github.com/IntelPython/dpnp/pull/2999) * Replaced the deprecated `nd_item::barrier()` member calls in the `accumulators` and `gemm` kernels with the SYCL 2020 `sycl::group_barrier()` free function [#3006](https://github.com/IntelPython/dpnp/pull/3006) * Changed `dpnp.broadcast_arrays` and `dpnp.tensor.broadcast_arrays` to return a tuple instead of a list, aligning with the 2025.12 Python array API spec [#2944](https://github.com/IntelPython/dpnp/pull/2944) +* Migrated to the OpenCL ICD loader from the conda-forge `ocl-icd-system` (Linux) and `khronos-opencl-icd-loader` (Windows) packages [#2905](https://github.com/IntelPython/dpnp/pull/2905) ### Deprecated From d61ebc5ea1bc0717b992f19d73a3d2508ad35c56 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 14:40:07 +0200 Subject: [PATCH 5/8] Guard to use conda-forge OpenCL ICD loaders only with DPC++ compiler and runtime 2026.1.1 or newer --- conda-recipe/meta.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 01a84bc3514d..55adc7de1152 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -2,6 +2,11 @@ {% set required_compiler_and_mkl_version = "2026.0" %} {% set required_dpctl_version = "0.23.0dev0" %} +{# The conda-forge OpenCL ICD loaders (ocl-icd-system / khronos-opencl-icd-loader) #} +{# require compiler and runtime 2026.1.1 or newer. Fall back to the legacy Intel #} +{# package while older compilers are still supported. #} +{% set use_conda_forge_ocl_icd = required_compiler_and_mkl_version.split('.') | map('int') | list >= [2026, 1, 1] %} + {% set pyproject = load_file_data('pyproject.toml') %} {% set py_build_deps = pyproject.get('build-system', {}).get('requires', []) %} @@ -55,8 +60,12 @@ requirements: - {{ pin_compatible('onemkl-sycl-rng', min_pin='x.x', max_pin='x') }} - {{ pin_compatible('onemkl-sycl-vm', min_pin='x.x', max_pin='x') }} - numpy + {% if use_conda_forge_ocl_icd %} - ocl-icd-system # [linux] - khronos-opencl-icd-loader # [win] + {% else %} + - intel-gpu-ocl-icd-system + {% endif %} build: number: {{ GIT_DESCRIBE_NUMBER }} From f4c42a932646687504d8ea6e74c470eb54acad0a Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 15:32:11 +0200 Subject: [PATCH 6/8] Bumped the default minimum required DPC++ compiler and oneMKL versions to 2026.1.1 and add MIN_BUILD_CMPL_MKL_VERSION to override that --- CHANGELOG.md | 2 +- conda-recipe/meta.yaml | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a19086ee8e9c..172c616deb26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,7 +39,7 @@ This release is compatible with NumPy 2.5. * Removed dead code branches guarded by outdated oneMKL and DPC++ compiler version checks [#2999](https://github.com/IntelPython/dpnp/pull/2999) * Replaced the deprecated `nd_item::barrier()` member calls in the `accumulators` and `gemm` kernels with the SYCL 2020 `sycl::group_barrier()` free function [#3006](https://github.com/IntelPython/dpnp/pull/3006) * Changed `dpnp.broadcast_arrays` and `dpnp.tensor.broadcast_arrays` to return a tuple instead of a list, aligning with the 2025.12 Python array API spec [#2944](https://github.com/IntelPython/dpnp/pull/2944) -* Migrated to the OpenCL ICD loader from the conda-forge `ocl-icd-system` (Linux) and `khronos-opencl-icd-loader` (Windows) packages [#2905](https://github.com/IntelPython/dpnp/pull/2905) +* Bumped the default minimum required DPC++ compiler and oneMKL versions to `2026.1.1` and migrated to the OpenCL ICD loader from the conda-forge `ocl-icd-system` (Linux) and `khronos-opencl-icd-loader` (Windows) packages [#2905](https://github.com/IntelPython/dpnp/pull/2905) ### Deprecated diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 55adc7de1152..62a4c89c4134 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -1,10 +1,22 @@ {% set max_compiler_and_mkl_version = environ.get("MAX_BUILD_CMPL_MKL_VERSION", "2027.0a0") %} -{% set required_compiler_and_mkl_version = "2026.0" %} +{% set required_compiler_and_mkl_version = environ.get("MIN_BUILD_CMPL_MKL_VERSION", "2026.1.1") %} {% set required_dpctl_version = "0.23.0dev0" %} +{# DPNP does not support a compiler and runtime older than 2026.0, so reject #} +{# any MIN_BUILD_CMPL_MKL_VERSION override below that by calling an undefined macro. #} +{% if required_compiler_and_mkl_version.split('.') | map('int') | list < [2026, 0] %} +{{ MIN_BUILD_CMPL_MKL_VERSION_must_be_at_least_2026_0() }} +{% endif %} + +{# The minimum must stay strictly below the (exclusive) maximum, otherwise the #} +{# ">=min,= max_compiler_and_mkl_version.split('.') | map('int') | list %} +{{ MIN_BUILD_CMPL_MKL_VERSION_must_be_below_MAX_BUILD_CMPL_MKL_VERSION() }} +{% endif %} + {# The conda-forge OpenCL ICD loaders (ocl-icd-system / khronos-opencl-icd-loader) #} {# require compiler and runtime 2026.1.1 or newer. Fall back to the legacy Intel #} -{# package while older compilers are still supported. #} +{# package when building against an older supported compiler. #} {% set use_conda_forge_ocl_icd = required_compiler_and_mkl_version.split('.') | map('int') | list >= [2026, 1, 1] %} {% set pyproject = load_file_data('pyproject.toml') %} From 0f806405a443387c453680c62bf644d7299826a5 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 16:09:09 +0200 Subject: [PATCH 7/8] Split required_compiler_and_mkl_version into DPC++ compiler and MKL versions --- CHANGELOG.md | 2 +- conda-recipe/meta.yaml | 29 +++++++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 172c616deb26..db208dbc13f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,7 +39,7 @@ This release is compatible with NumPy 2.5. * Removed dead code branches guarded by outdated oneMKL and DPC++ compiler version checks [#2999](https://github.com/IntelPython/dpnp/pull/2999) * Replaced the deprecated `nd_item::barrier()` member calls in the `accumulators` and `gemm` kernels with the SYCL 2020 `sycl::group_barrier()` free function [#3006](https://github.com/IntelPython/dpnp/pull/3006) * Changed `dpnp.broadcast_arrays` and `dpnp.tensor.broadcast_arrays` to return a tuple instead of a list, aligning with the 2025.12 Python array API spec [#2944](https://github.com/IntelPython/dpnp/pull/2944) -* Bumped the default minimum required DPC++ compiler and oneMKL versions to `2026.1.1` and migrated to the OpenCL ICD loader from the conda-forge `ocl-icd-system` (Linux) and `khronos-opencl-icd-loader` (Windows) packages [#2905](https://github.com/IntelPython/dpnp/pull/2905) +* Bumped the default minimum required DPC++ compiler version to `2026.1.1` and migrated to the OpenCL ICD loader from the conda-forge `ocl-icd-system` (Linux) and `khronos-opencl-icd-loader` (Windows) packages [#2905](https://github.com/IntelPython/dpnp/pull/2905) ### Deprecated diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index 62a4c89c4134..e438ff5952cd 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -1,23 +1,24 @@ {% set max_compiler_and_mkl_version = environ.get("MAX_BUILD_CMPL_MKL_VERSION", "2027.0a0") %} -{% set required_compiler_and_mkl_version = environ.get("MIN_BUILD_CMPL_MKL_VERSION", "2026.1.1") %} +{% set required_compiler_version = environ.get("MIN_BUILD_CMPL_VERSION", "2026.1.1") %} +{% set required_mkl_version = "2026.0" %} {% set required_dpctl_version = "0.23.0dev0" %} -{# DPNP does not support a compiler and runtime older than 2026.0, so reject #} -{# any MIN_BUILD_CMPL_MKL_VERSION override below that by calling an undefined macro. #} -{% if required_compiler_and_mkl_version.split('.') | map('int') | list < [2026, 0] %} -{{ MIN_BUILD_CMPL_MKL_VERSION_must_be_at_least_2026_0() }} +{# DPNP does not support a compiler older than 2026.0, so reject any #} +{# MIN_BUILD_CMPL_VERSION override below that by calling an undefined macro. #} +{% if required_compiler_version.split('.') | map('int') | list < [2026, 0] %} +{{ MIN_BUILD_CMPL_VERSION_must_be_at_least_2026_0() }} {% endif %} -{# The minimum must stay strictly below the (exclusive) maximum, otherwise the #} -{# ">=min,= max_compiler_and_mkl_version.split('.') | map('int') | list %} -{{ MIN_BUILD_CMPL_MKL_VERSION_must_be_below_MAX_BUILD_CMPL_MKL_VERSION() }} +{# The minimum compiler version must stay strictly below the (exclusive) maximum, #} +{# otherwise the ">=min,= max_compiler_and_mkl_version.split('.') | map('int') | list %} +{{ MIN_BUILD_CMPL_VERSION_must_be_below_MAX_BUILD_CMPL_MKL_VERSION() }} {% endif %} {# The conda-forge OpenCL ICD loaders (ocl-icd-system / khronos-opencl-icd-loader) #} -{# require compiler and runtime 2026.1.1 or newer. Fall back to the legacy Intel #} -{# package when building against an older supported compiler. #} -{% set use_conda_forge_ocl_icd = required_compiler_and_mkl_version.split('.') | map('int') | list >= [2026, 1, 1] %} +{# require a compiler and runtime of 2026.1.1 or newer. Fall back to the legacy #} +{# intel-gpu-ocl-icd-system package when building against an older compiler. #} +{% set use_conda_forge_ocl_icd = required_compiler_version.split('.') | map('int') | list >= [2026, 1, 1] %} {% set pyproject = load_file_data('pyproject.toml') %} {% set py_build_deps = pyproject.get('build-system', {}).get('requires', []) %} @@ -50,14 +51,14 @@ requirements: # versioneer dependency - tomli # [py<311] # Do not use pyproject.toml for setting dependencies on OneAPI packages - - mkl-devel-dpcpp >={{ required_compiler_and_mkl_version }},<{{ max_compiler_and_mkl_version }} + - mkl-devel-dpcpp >={{ required_mkl_version }},<{{ max_compiler_and_mkl_version }} - onedpl-devel - tbb-devel - opencl-headers >=2025.06.13 # [win] build: - {{ compiler('cxx') }} - {{ stdlib('c') }} - - {{ compiler('dpcpp') }} >={{ required_compiler_and_mkl_version }},<{{ max_compiler_and_mkl_version }} + - {{ compiler('dpcpp') }} >={{ required_compiler_version }},<{{ max_compiler_and_mkl_version }} run: - python - python-gil # [py>=314] From a6cc3d47b04872ea870e4fabca55f55f03a0d2b8 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 3 Aug 2026 19:05:12 +0200 Subject: [PATCH 8/8] Add more clarity on building and installing with only conda-forge channel --- conda-recipe/meta.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index e438ff5952cd..52ac542185db 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -16,8 +16,9 @@ {% endif %} {# The conda-forge OpenCL ICD loaders (ocl-icd-system / khronos-opencl-icd-loader) #} -{# require a compiler and runtime of 2026.1.1 or newer. Fall back to the legacy #} -{# intel-gpu-ocl-icd-system package when building against an older compiler. #} +{# require DPC++ RT of 2026.1.1 or newer when installing from the Intel channel. #} +{# So fall back to intel-gpu-ocl-icd-system for older Intel channel DPC++ RTs. #} +{# Building and installing solely with conda-forge channel works with any 2026.0+ compiler. #} {% set use_conda_forge_ocl_icd = required_compiler_version.split('.') | map('int') | list >= [2026, 1, 1] %} {% set pyproject = load_file_data('pyproject.toml') %}