thrust::device_ptr
Defined in thrust/device_ptr.h
-
template<typename T>
class device_ptr : public thrust::pointer<T, thrust::device_system_tag, thrust::device_reference<T>, thrust::device_ptr<T>> device_ptr
is a pointer-like object which points to an object that resides in memory associated with the device system.device_ptr
has pointer semantics: it may be dereferenced safely from anywhere, including the host, and may be manipulated with pointer arithmetic.device_ptr
can be created with device_new, device_malloc, device_malloc_allocator, device_allocator, or device_pointer_cast, or by explicitly calling its constructor with a raw pointer.The raw pointer contained in a
device_ptr
may be obtained viaget
member function or the raw_pointer_cast free function.Algorithms operating on
device_ptr
types will automatically be dispatched to the device system.See also
device_new
See also
device_malloc
See also
See also
See also
device_pointer_cast
See also
raw_pointer_cast
Note
device_ptr
is not a smart pointer; it is the programmer’s responsibility to deallocate memory pointed to bydevice_ptr
.Public Functions
-
_CCCL_HIDE_FROM_ABI device_ptr() = default
-
inline device_ptr(std::nullptr_t)
Construct a null
device_ptr
.- Parameters
ptr – A null pointer.
- Post
get() == nullptr
.
-
template<typename U>
inline explicit device_ptr(U *ptr) Construct a
device_ptr
from a raw pointer which is convertible toT*
.- Template Parameters
U – A type whose pointer is convertible to
T*
.- Parameters
ptr – A raw pointer to a
U
in device memory to construct from.- Pre
std::is_convertible_v<U*, T*> == true
.- Pre
ptr
points to a location in device memory.- Post
get() == nullptr
.
-
template<typename U>
inline device_ptr(device_ptr<U> const &other) Copy construct a
device_ptr
from anotherdevice_ptr
whose pointer type is convertible toT*
.- Template Parameters
U – A type whose pointer is convertible to
T*
.- Parameters
other – A
device_ptr
to aU
to construct from.- Pre
std::is_convertible_v<U*, T*> == true
.- Post
get() == other.get()
.
-
template<typename U>
inline device_ptr &operator=(device_ptr<U> const &other) Set this
device_ptr
to point to the same object as anotherdevice_ptr
whose pointer type is convertible toT*
.- Template Parameters
U – A type whose pointer is convertible to
T*
.- Parameters
other – A
device_ptr
to aU
to assign from.- Pre
std::is_convertible_v<U*, T*> == true
.- Post
get() == other.get()
.- Returns
*this
.
-
inline device_ptr &operator=(std::nullptr_t)
Set this
device_ptr
to null.- Parameters
ptr – A null pointer.
- Post
get() == nullptr
.- Returns
*this
.
-
T *get() const
Return the raw pointer that this
device_ptr
points to.
-
_CCCL_HIDE_FROM_ABI device_ptr() = default