Description
Summary:
The Intel SYCL ecosystem should make device-aware vectors and pointers in their algorithms and operations (similar to how CUDA/Thrust supports them).
Problem Statement:
Thrust has device_vector and device_pointer objects and supports them in all their algorithms and containers. We should support them as well (I believe that they have been defined in the SYCLomatic headers, but this should be moved to somewhere more general use, like oneDPL library).
Preferred Solution:
We point to some that have been implemented in distributed ranges SYCL repo as potential starting places
-
allocators: https://github.com/oneapi-src/distributed-ranges/blob/main/include/dr/sp/allocators.hpp
(shared_allocator
can just be the built-in SYCL one, while we need to definedevice_allocator
) -
device_ptr: https://github.com/oneapi-src/distributed-ranges/blob/main/include/dr/sp/device_ptr.hpp
-
vector: https://github.com/oneapi-src/distributed-ranges/blob/main/include/dr/sp/vector.hpp
(a basic implementation ofstd::vector
that is generic enough to allow pointers to not be contiguous iterators (whereT&
is the reference))