Skip to content

Commit 51fc1e6

Browse files
Get buffer function now raises exception trying to access device pointer
``` In [1]: import dpctl In [2]: ms = dpctl.MemoryUSMShared(256) In [3]: md = dpctl.MemoryUSMDevice(256) In [4]: ms2 = dpctl.MemoryUSMShared(md) In [5]: memoryview(ms2)[1] --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-5-d512baf01446> in <module>() ----> 1 memoryview(ms2)[1] /localdisk/work/opavlyk/repos/dpctl/dpctl/_memory.pyx in dpctl._memory.MemoryUSMShared.__getbuffer__() 448 449 def __getbuffer__(self, Py_buffer *buffer, int flags): --> 450 self._getbuffer(buffer, flags) 451 452 /localdisk/work/opavlyk/repos/dpctl/dpctl/_memory.pyx in dpctl._memory.Memory._getbuffer() 250 ctx.get_context_ref()) 251 if kind == b'device': --> 252 raise ValueError('USM Device memory is not host accessible') 253 buffer.buf = <char *>self.memory_ptr 254 buffer.format = 'B' # byte ValueError: USM Device memory is not host accessible ```
1 parent e9a9633 commit 51fc1e6

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

dpctl/_memory.pyx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,12 @@ cdef class Memory:
244244

245245
cdef _getbuffer(self, Py_buffer *buffer, int flags):
246246
# memory_ptr is Ref which is pointer to SYCL type. For USM it is void*.
247+
cdef SyclContext ctx = self._context
248+
cdef const char * kind = DPPLUSM_GetPointerType(
249+
self.memory_ptr,
250+
ctx.get_context_ref())
251+
if kind == b'device':
252+
raise ValueError('USM Device memory is not host accessible')
247253
buffer.buf = <char *>self.memory_ptr
248254
buffer.format = 'B' # byte
249255
buffer.internal = NULL # see References

0 commit comments

Comments
 (0)