USM Pointer Queries#
Since USM pointers look like raw C++ pointers, users cannot deduce what kind of USM allocation a given pointer may be from by examining its type.
Two functions are defined that let users query the type of a USM allocation and, if applicable, the sycl::device on which it was allocated.
Note
These query functions are only supported on the host.
See also
SYCL Specification Section 4.8.4
Pointer query functions#
sycl::get_pointer_type#
sycl::usm::alloc get_pointer_type(const void* ptr, const sycl::context& syclContext);
Returns the USM allocation type for ptr if ptr falls
inside a valid USM allocation for the context syclContext.
Returns sycl::usm::alloc::unknown if ptr does
not point within a valid USM allocation from syclContext.
sycl::get_pointer_device#
sycl::device get_pointer_device(const void* ptr, const sycl::context& syclContext);
Returns the sycl::device associated with the USM allocation.
If ptr points within a device USM allocation or
a shared USM allocation for the context syclContext,
returns the same device that was passed when allocating the memory.
If ptr points within a host USM allocation for the
context syclContext, returns the first device in syclContext.
Exceptions
sycl::errc::invalidIf
ptrdoes not point within a valid USM allocation fromsyclContext.