@@ -215,8 +215,10 @@ cdef void _dispatch_buffer_copy(
215215 if _stream_is_capturing(s):
216216 raise TypeError (
217217 f" {method_name} does not support graph capture with options "
218- " (matches copy_batch); use GraphNode.memcpy to build attributed copies "
219- " into a graph, or pass options=None."
218+ " (matches copy_batch); the driver has no graph-node form of "
219+ " cuMemcpyWithAttributesAsync, so options cannot be honored in a graph. "
220+ " Use GraphNode.memcpy for a plain (non-attributed) copy node, or pass "
221+ " options=None."
220222 )
221223 if _with_attributes_available():
222224 _do_copy_with_attributes(dst, src, nbytes, options, as_cu(s._h_stream))
@@ -485,12 +487,15 @@ cdef class Buffer:
485487 asynchronous copy
486488 options : :class:`~utils.CopyOptions`, optional
487489 Transfer hints (source access order , location hints , overlap mode ).
488- Not accepted with ``LEGACY_DEFAULT_STREAM`` or a capturing stream
489- (matches :func:`utils.copy_batch`); use ``PER_THREAD_DEFAULT_STREAM``
490- or :meth:`graph.GraphNode.memcpy` instead. On cuda.bindings/driver
491- older than CUDA 13.2, ``src_access_order`` values of ``STREAM``
492- and ``ANY`` fall back to ``cuMemcpyAsync`` silently; ``DURING_API_CALL``
493- raises instead of silently downgrading its guarantee.
490+ Honored when cuda.bindings and the driver are both CUDA 13.2 or
491+ newer. Not accepted with ``LEGACY_DEFAULT_STREAM``; use
492+ ``PER_THREAD_DEFAULT_STREAM`` instead. Not accepted with a
493+ capturing stream either , since a graph cannot represent these
494+ attributes; use :meth:`graph.GraphNode.memcpy` for a plain ,
495+ non-attributed copy node , or pass ``options = None ``. On an older
496+ cuda.bindings/driver , ``src_access_order`` values of ``STREAM``
497+ and ``ANY`` are silently ignored; ``DURING_API_CALL`` raises
498+ instead of silently downgrading its guarantee.
494499
495500 Raises
496501 ------
@@ -500,10 +505,8 @@ cdef class Buffer:
500505 or a stream currently in graph capture mode.
501506 RuntimeError
502507 If ``options.src_access_order`` is ``DURING_API_CALL`` and
503- cuda.bindings/driver older than CUDA 13.2 makes the native
504- ``cuMemcpyWithAttributesAsync`` path unavailable: the
505- ``cuMemcpyAsync`` fallback reads the source in stream order
506- only , which cannot honor that guarantee.
508+ cuda.bindings or the driver is older than CUDA 13.2: falling
509+ back to a plain copy cannot honor that guarantee.
507510
508511 """
509512 cdef Stream s = Stream_accept(stream)
@@ -537,12 +540,15 @@ cdef class Buffer:
537540 asynchronous copy
538541 options : :class:`~utils.CopyOptions`, optional
539542 Transfer hints (source access order , location hints , overlap mode ).
540- Not accepted with ``LEGACY_DEFAULT_STREAM`` or a capturing stream
541- (matches :func:`utils.copy_batch`); use ``PER_THREAD_DEFAULT_STREAM``
542- or :meth:`graph.GraphNode.memcpy` instead. On cuda.bindings/driver
543- older than CUDA 13.2, ``src_access_order`` values of ``STREAM``
544- and ``ANY`` fall back to ``cuMemcpyAsync`` silently; ``DURING_API_CALL``
545- raises instead of silently downgrading its guarantee.
543+ Honored when cuda.bindings and the driver are both CUDA 13.2 or
544+ newer. Not accepted with ``LEGACY_DEFAULT_STREAM``; use
545+ ``PER_THREAD_DEFAULT_STREAM`` instead. Not accepted with a
546+ capturing stream either , since a graph cannot represent these
547+ attributes; use :meth:`graph.GraphNode.memcpy` for a plain ,
548+ non-attributed copy node , or pass ``options = None ``. On an older
549+ cuda.bindings/driver , ``src_access_order`` values of ``STREAM``
550+ and ``ANY`` are silently ignored; ``DURING_API_CALL`` raises
551+ instead of silently downgrading its guarantee.
546552
547553 Raises
548554 ------
@@ -552,10 +558,8 @@ cdef class Buffer:
552558 or a stream currently in graph capture mode.
553559 RuntimeError
554560 If ``options.src_access_order`` is ``DURING_API_CALL`` and
555- cuda.bindings/driver older than CUDA 13.2 makes the native
556- ``cuMemcpyWithAttributesAsync`` path unavailable: the
557- ``cuMemcpyAsync`` fallback reads the source in stream order
558- only , which cannot honor that guarantee.
561+ cuda.bindings or the driver is older than CUDA 13.2: falling
562+ back to a plain copy cannot honor that guarantee.
559563 """
560564 cdef Stream s = Stream_accept(stream)
561565 cdef size_t dst_size = self ._size
0 commit comments