Closed
Description
PyDPPL should expose sycl USM allocators to Python.
What needs to be done?
-
Add a C-API wrapper into
pydppl/backends
for the functions that we need fromcl::sycl::usm
. The C-API will be similar to what we currently have forcl::sycl::queue
(ref. https://github.com/IntelPython/pydppl/blob/master/backends/include/dppl_sycl_queue_interface.h). -
We need this so that Sycl headers do not have to be directly included in the Cython extension module and we can use MSVC/GCC to build the extension and link to our helper (libDPPLSyclInteface).
-
Cython extension:
- We need three classes:
MemoryUSMShared
,MemoryUSMHost
,MemoryUSMDevice
. Each class corresponds to the three USM memory allocator. MemoryUSMDevice
should not expose__getbuffer__
as Python objects cannot directly use device memory.- The
__cinit__
of the Memory classes perhaps should provide a way to specify the context in which memory is to be allocated. The other option will be to usedppl.get_current_queue()
. Using the current queue always can lead to programmer errors where he/she tries to use a memory allocated on a given context on a device that is not in that context. MemoryUSMxxx
should provide a factory function to copy data between incompatible device.
Metadata
Metadata
Assignees
Labels
No labels