diff --git a/doc/runtime_memory.rst b/doc/runtime_memory.rst index cfe41dc565e35d6bcab81de7d07de02b5262af06..f9c31a8bff21c056a8743b5c76aa4d4aca67de59 100644 --- a/doc/runtime_memory.rst +++ b/doc/runtime_memory.rst @@ -371,6 +371,8 @@ Transfers .. autofunction:: enqueue_copy(queue, dest, src, **kwargs) +.. autofunction:: enqueue_fill(queue, dest, src, **kwargs) + Mapping Memory into Host Address Space -------------------------------------- diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index ab042c0ff4307af732ffc269813d4465b6b553b7..94c35cc567a94575664ebc1993022ff50d74e9bb 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -1962,6 +1962,28 @@ def enqueue_copy(queue, dest, src, **kwargs): # }}} +# {{{ enqueue_fill + +def enqueue_fill(queue: CommandQueue, + dest: "Union[MemoryObjectHolder, SVMPointer]", + pattern: Any, size: int, *, offset: int = 0, + wait_for: Optional[Sequence[Event]] = None) -> Event: + """ + .. versionadded:: 2022.2 + """ + if isinstance(dest, MemoryObjectHolder): + return enqueue_fill_buffer(queue, dest, pattern, offset, size, wait_for) + elif isinstance(dest, SVMPointer): + if offset: + raise NotImplementedError("enqueue_fill with SVM does not yet support " + "offsets") + return enqueue_svm_memfill(queue, dest, pattern, size, wait_for) + else: + raise TypeError(f"enqueue_fill does not know how to fill '{type(dest)}'") + +# }}} + + # {{{ image creation DTYPE_TO_CHANNEL_TYPE = { diff --git a/pyopencl/array.py b/pyopencl/array.py index 80b1c61d1396eac1639ee77071cdd0fea66a1d2b..a1bf58e9d8bac90318294fbb079dcc422c9a515b 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -1469,8 +1469,8 @@ class Array: # https://github.com/inducer/pyopencl/issues/395 if cl_version_gtr_1_2 and not (on_nvidia and self.nbytes >= 2**31): self.add_event( - cl.enqueue_fill_buffer(queue, self.base_data, np.int8(0), - self.offset, self.nbytes, wait_for=wait_for)) + cl.enqueue_fill(queue, self.base_data, np.int8(0), + self.nbytes, offset=self.offset, wait_for=wait_for)) else: zero = np.zeros((), self.dtype) self.fill(zero, queue=queue)