Skip to content

Commit defe185

Browse files
committed
Add, use enqueue_fill
1 parent bfcfcc9 commit defe185

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

doc/runtime_memory.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ Transfers
281281

282282
.. autofunction:: enqueue_copy(queue, dest, src, **kwargs)
283283

284+
.. autofunction:: enqueue_fill(queue, dest, src, **kwargs)
285+
284286
Mapping Memory into Host Address Space
285287
--------------------------------------
286288

pyopencl/__init__.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
from sys import intern
2424
from warnings import warn
25+
from typing import Union, Any
2526

2627
from pyopencl.version import VERSION, VERSION_STATUS, VERSION_TEXT # noqa
2728

@@ -1815,6 +1816,26 @@ def enqueue_copy(queue, dest, src, **kwargs):
18151816
# }}}
18161817

18171818

1819+
# {{{ enqueue_fill
1820+
1821+
def enqueue_fill(queue: CommandQueue, dest: Union[MemoryObjectHolder, SVM],
1822+
pattern: Any, size: int, *, offset: int = 0, wait_for=None) -> Event:
1823+
"""
1824+
.. versionadded:: 2022.2
1825+
"""
1826+
if isinstance(dest, MemoryObjectHolder):
1827+
return enqueue_fill_buffer(queue, dest, pattern, offset, size, wait_for)
1828+
elif isinstance(dest, SVM):
1829+
if offset:
1830+
raise NotImplementedError("enqueue_fill with SVM does not yet support "
1831+
"offsets")
1832+
return enqueue_svm_memfill(queue, dest, pattern, size, wait_for)
1833+
else:
1834+
raise TypeError(f"enqueue_fill does not know how to fill '{type(dest)}'")
1835+
1836+
# }}}
1837+
1838+
18181839
# {{{ image creation
18191840

18201841
DTYPE_TO_CHANNEL_TYPE = {

pyopencl/array.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,8 +1458,8 @@ def _zero_fill(self, queue=None, wait_for=None):
14581458
# https://github.com/inducer/pyopencl/issues/395
14591459
if cl_version_gtr_1_2 and not (on_nvidia and self.nbytes >= 2**31):
14601460
self.add_event(
1461-
cl.enqueue_fill_buffer(queue, self.base_data, np.int8(0),
1462-
self.offset, self.nbytes, wait_for=wait_for))
1461+
cl.enqueue_fill(queue, self.base_data, np.int8(0),
1462+
self.nbytes, offset=self.offset, wait_for=wait_for))
14631463
else:
14641464
zero = np.zeros((), self.dtype)
14651465
self.fill(zero, queue=queue)

0 commit comments

Comments
 (0)