Skip to content

nixl-cu12: Add version 1.4.0 - #2314

Merged
luhenry merged 2 commits into
mainfrom
nixl-cu12
Sep 26, 2026
Merged

luhenry merged 2 commits into
mainfrom
nixl-cu12

Conversation

@luhenry

@luhenry luhenry commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Compiles NIXL's C++ core, its pybind11 bindings and the UCX and POSIX transfer backends, against UCX built from source. Upstream publishes no riscv64 wheel.

Mirrors upstream's build-wheel.sh and Dockerfile.manylinux.

Differs from upstream

  • No CUDA toolkit - none exists for riscv64; meson's own no-CUDA path keeps the nixl_cu12 name.
  • UCX built without --with-cuda; nixl_ep is not built (needs CUDA).
  • Only the UCX and POSIX plugins - the other plugins' SDKs (etcd, AWS, Azure, DOCA, GDS) are not in the image.
  • NIXL installed system-wide via meson install + ldconfig in before-all, so auditwheel repair can resolve liburing.so.2's SONAME (meson-python drops the symlink otherwise).

Testing

  • same as upstream (pytest -s test/python, UCX_TLS=^shm as in upstream's non-GPU CI)
  • nixl meta package installed with --no-deps, since nixl-cu13 has no riscv64 wheel.

License: Wheel bundles UCX (BSD-3-Clause) and libaio (LGPL-2.1); upstream ships their texts in ATTRIBUTIONS-CPP.md, which the patch adds to the wheel.

Patches

  • 0001-Ship-ATTRIBUTIONS-CPP.md-in-the-wheel-s-licence-files.patch - To upstream. Without it no third-party licence text ships; not arch-specific.

Rehearsed CPU-only on x86_64; 24 passed, 2 skipped.

Build NIXL's CPU-only configuration for riscv64: meson disables every
CUDA/GPU plugin when no CUDA toolkit is found and still names the
package nixl_cu12, leaving the UCX and POSIX backends. UCX v1.22.0 is
built from source with upstream's configure flags minus --with-cuda.
luhenry added a commit that referenced this pull request Sep 25, 2026
luhenry added a commit that referenced this pull request Sep 25, 2026
@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-26 08:21 UTC

meson-python packs only the real file of NIXL's versioned-SONAME
subproject libraries (liburing.so.2.14, SONAME liburing.so.2; the
prometheus-cpp libcore/libpull likewise), never the SONAME symlink, so
auditwheel repair fails with "required library liburing.so.2 could not
be located". Upstream's Dockerfile.manylinux avoids this by running
meson setup + ninja install of NIXL to /usr/local/nixl and registering
it with the loader before build-wheel.sh; do the same in before-all.
@luhenry
luhenry merged commit d33cb11 into main Sep 26, 2026
15 of 16 checks passed
@luhenry
luhenry deleted the nixl-cu12 branch September 26, 2026 07:52
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.

1 participant