Skip to content

feat(example): add gpu-pipeline bridging capy with NVIDIA nvexec#290

Merged
sgerbino merged 1 commit into
cppalliance:developfrom
sgerbino:pr/gpu
May 28, 2026
Merged

feat(example): add gpu-pipeline bridging capy with NVIDIA nvexec#290
sgerbino merged 1 commit into
cppalliance:developfrom
sgerbino:pr/gpu

Conversation

@sgerbino
Copy link
Copy Markdown
Collaborator

Demonstrates that capy::await_sender and capy::as_sender compose with nvexec::stream_scheduler, not just CPU schedulers. Scene 1: a capy coroutine co_awaits a SAXPY global kernel scheduled on a CUDA stream, with continues_on(cpu) landing completion on host before the bridge connects. Scene 2: capy's read_some is exposed as a stdexec sender, driven by sync_wait, with upon_error catching an injected eof.

Gated behind BOOST_CAPY_BUILD_NVEXEC_EXAMPLES (default OFF) which hard-errors if BOOST_CAPY_BUILD_STDEXEC_EXAMPLES is off or CMAKE_CXX_STANDARD < 23, then enables the CUDA language at the top level. Bridge headers are copied verbatim from bench/stdexec/ so example tweaks can land without disturbing the bench.

The README documents the working toolchain (clang as both host and CUDA compiler with CUDA_SEPARABLE_COMPILATION OFF). nvc++ 26.3 does not enable C++20 coroutines, so the nominally blessed nvexec compiler cannot compile capy.

Demonstrates that capy::await_sender and capy::as_sender compose with
nvexec::stream_scheduler, not just CPU schedulers. Scene 1: a capy
coroutine co_awaits a SAXPY __global__ kernel scheduled on a CUDA
stream, with continues_on(cpu) landing completion on host before the
bridge connects. Scene 2: capy's read_some is exposed as a stdexec
sender, driven by sync_wait, with upon_error catching an injected eof.

Gated behind BOOST_CAPY_BUILD_NVEXEC_EXAMPLES (default OFF) which
hard-errors if BOOST_CAPY_BUILD_STDEXEC_EXAMPLES is off or
CMAKE_CXX_STANDARD < 23, then enables the CUDA language at the top
level. Bridge headers are copied verbatim from bench/stdexec/ so
example tweaks can land without disturbing the bench.

The README documents the working toolchain (clang as both host and
CUDA compiler with CUDA_SEPARABLE_COMPILATION OFF). nvc++ 26.3 does
not enable C++20 coroutines, so the nominally blessed nvexec compiler
cannot compile capy.
@cppalliance-bot
Copy link
Copy Markdown

An automated preview of the documentation is available at https://290.capy.prtest3.cppalliance.org/index.html

If more commits are pushed to the pull request, the docs will rebuild at the same URL.

2026-05-28 16:16:56 UTC

@codecov
Copy link
Copy Markdown

codecov Bot commented May 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.27%. Comparing base (2329f99) to head (89d3c05).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff            @@
##           develop     #290   +/-   ##
========================================
  Coverage    92.27%   92.27%           
========================================
  Files          164      164           
  Lines         8862     8862           
========================================
  Hits          8177     8177           
  Misses         685      685           
Flag Coverage Δ
linux 92.26% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2329f99...89d3c05. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cppalliance-bot
Copy link
Copy Markdown

GCOVR code coverage report https://290.capy.prtest3.cppalliance.org/gcovr/index.html
LCOV code coverage report https://290.capy.prtest3.cppalliance.org/genhtml/index.html
Coverage Diff Report https://290.capy.prtest3.cppalliance.org/diff-report/index.html

Build time: 2026-05-28 16:36:29 UTC

@sgerbino sgerbino merged commit 7ab1157 into cppalliance:develop May 28, 2026
38 checks passed
@sgerbino sgerbino deleted the pr/gpu branch May 28, 2026 17:37
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