1#include <muda/container/vector.h>
2#include <muda/buffer/buffer_launch.h>
7DeviceBuffer<T>::DeviceBuffer(
size_t n)
15DeviceBuffer<T>::DeviceBuffer()
23DeviceBuffer<T>::DeviceBuffer(
const DeviceBuffer<T>& other)
26 .alloc(*
this, other.size())
27 .copy(view(), other.view())
32DeviceBuffer<T>::DeviceBuffer(DeviceBuffer<T>&& other) MUDA_NOEXCEPT
33 : m_data(other.m_data),
35 m_capacity(other.m_capacity)
37 other.m_data =
nullptr;
43DeviceBuffer<T>& DeviceBuffer<T>::operator=(
const DeviceBuffer<T>& other)
49 .resize(*
this, other.size())
50 .copy(view(), other.view())
57DeviceBuffer<T>& DeviceBuffer<T>::operator=(DeviceBuffer<T>&& other)
69 m_data = other.m_data;
70 m_size = other.m_size;
71 m_capacity = other.m_capacity;
73 other.m_data =
nullptr;
81DeviceBuffer<T>::DeviceBuffer(CBufferView<T> other)
84 .alloc(*
this, other.size())
90DeviceBuffer<T>::DeviceBuffer(
const std::vector<T>& host)
93 .alloc(*
this, host.size())
94 .copy(view(), host.data())
99DeviceBuffer<T>& DeviceBuffer<T>::operator=(CBufferView<T> other)
102 .resize(*
this, other.size())
109DeviceBuffer<T>& DeviceBuffer<T>::operator=(
const std::vector<T>& other)
112 .resize(*
this, other.size())
113 .copy(view(), other.data())
119void DeviceBuffer<T>::copy_to(std::vector<T>& host)
const
122 view().copy_to(host.data());
126void DeviceBuffer<T>::copy_from(
const std::vector<T>& host)
129 view().copy_from(host.data());
133void DeviceBuffer<T>::resize(
size_t new_size)
136 .resize(*
this, new_size)
141void DeviceBuffer<T>::resize(
size_t new_size,
const value_type& value)
144 .resize(*
this, new_size, value)
149void DeviceBuffer<T>::reserve(
size_t new_capacity)
152 .reserve(*
this, new_capacity)
157void DeviceBuffer<T>::clear()
165void DeviceBuffer<T>::shrink_to_fit()
168 .shrink_to_fit(*
this)
173void DeviceBuffer<T>::fill(
const T& v)
179Dense1D<T> DeviceBuffer<T>::viewer() MUDA_NOEXCEPT
181 return view().viewer();
185CDense1D<T> DeviceBuffer<T>::cviewer() const MUDA_NOEXCEPT
187 return view().cviewer();
191BufferView<T> DeviceBuffer<T>::view(
size_t offset,
size_t size) MUDA_NOEXCEPT
193 return view().subview(offset, size);
197BufferView<T> DeviceBuffer<T>::view() MUDA_NOEXCEPT
199 return BufferView<T>{m_data, 0, m_size};
203CBufferView<T> DeviceBuffer<T>::view(
size_t offset,
size_t size)
const MUDA_NOEXCEPT
205 return view().subview(offset, size);
209CBufferView<T> DeviceBuffer<T>::view() const MUDA_NOEXCEPT
211 return CBufferView<T>{m_data, 0, m_size};
215DeviceBuffer<T>::~DeviceBuffer()