Skip to content

Add conda-forge only build and test workflow - #3035

Draft
antonwolfy wants to merge 6 commits into
masterfrom
add-conda-forge-package-workflow
Draft

Add conda-forge only build and test workflow#3035
antonwolfy wants to merge 6 commits into
masterfrom
add-conda-forge-package-workflow

Conversation

@antonwolfy

@antonwolfy antonwolfy commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

This PR adds a Conda package (conda-forge) workflow that builds and tests dpnp using its build/runtime dependencies (compiler, oneMKL, dpctl and NumPy) resolved purely from conda-forge with --override-channels. It validates that dpnp works when built and installed solely from conda-forge, independently of the Intel channel.

The workflow relies on a dedicated conda-recipe-cf recipe:

  • pins the compiler and oneMKL to conda-forge builds (gxx 15 / sysroot 2.28 / NumPy 2);
  • lists cmake and ninja under requirements/build and keeps the remaining host dependencies in sync with pyproject.toml;
  • always relies on the conda-forge OpenCL ICD loaders (ocl-icd-system on Linux, khronos-opencl-icd-loader on Windows).

Build and test stages follow the same naming and structure as the existing Conda package workflow: a build matrix over Python 3.10-3.14 (including the free-threaded builds), retry-on-failure test runs, separate tensor tests, and OpenCL CPU driver registration on Windows.

  • Have you provided a meaningful PR description?
  • Have you added a test, reproducer or referred to an issue with a reproducer?
  • Have you tested your changes locally for CPU and GPU devices?
  • Have you made sure that new changes do not introduce compiler warnings?
  • Have you checked performance impact of proposed changes?
  • Have you added documentation for your changes, if necessary?
  • Have you added your changes to the changelog?

Add a 'Conda package (conda-forge)' workflow with a dedicated
conda-recipe-cf recipe that builds and tests dpnp using compiler,
oneMKL, dpctl and NumPy dependencies resolved solely from conda-forge.
@antonwolfy antonwolfy self-assigned this Aug 20, 2026
@antonwolfy antonwolfy added this to the 0.21.0 release milestone Aug 20, 2026
The host dependency on dpctl was missing, so find_package(Dpctl) had
nothing to locate in the build environment.
@antonwolfy
antonwolfy force-pushed the add-conda-forge-package-workflow branch from cc38c04 to 8a4f416 Compare August 20, 2026 11:59
A free-threaded (cp314t) dpctl is not yet available on conda-forge, so
the free-threaded build/test entries fail to solve. Remove them from the
build, test_linux and test_windows matrices with a TODO to restore them
once conda-forge ships a free-threaded dpctl.
@github-actions

Copy link
Copy Markdown
Contributor

View rendered docs @ https://intelpython.github.io/dpnp/pull/3035/index.html

@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Array API standard conformance tests for dpnp=0.21.0dev5=py314ha0e2e8e_10 ran successfully.
Passed: 1376
Failed: 1
Skipped: 5

@coveralls

coveralls commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Coverage Status

coverage: 78.477%. remained the same — add-conda-forge-package-workflow into master

…pe-cf

conda-forge folds the Intel compiler runtime libraries (libircmt.lib on
Windows, libirc.a on Linux) into the build-only dpcpp_impl package, so they
land in the build prefix and are off the linker's default search path. Add
that directory via LIB (Windows) / LIBRARY_PATH (Linux) so icx can link.
dpctl.get_devices() returns a list in dpctl < 0.23 and a tuple from 0.23
onwards, so gate the tuple-equality assertion with with_requires.
Everything in this lane comes from conda-forge, so the Intel-channel
set-intel-ocl-icd-registry.ps1 helper and cl.cfg are never present. Drop the
dead branches and keep only the manual ICD-loader registration of intelocl64.dll.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants