2#include <muda/launch/memory.h>
4#include <muda/buffer/buffer_2d_view.h>
5#include <muda/buffer/buffer_3d_view.h>
7namespace muda::details::buffer
10MUDA_INLINE MUDA_HOST BufferView<T> reserve_1d(cudaStream_t stream,
size_t size)
13 Memory(stream).alloc_1d(&ptr, size *
sizeof(T));
14 return BufferView<T>{ptr, 0, size};
18MUDA_INLINE MUDA_HOST Buffer2DView<T> reserve_2d(cudaStream_t stream, Extent2D extent)
21 size_t pitch_bytes = 0;
22 Memory(stream).alloc_2d(
23 &ptr, &pitch_bytes, extent.width() *
sizeof(T), extent.height());
24 return Buffer2DView<T>{ptr, pitch_bytes, Offset2D::Zero(), extent};
28MUDA_INLINE MUDA_HOST Buffer3DView<T> reserve_3d(cudaStream_t stream, Extent3D extent)
30 cudaPitchedPtr pitched_ptr;
31 Memory(stream).alloc_3d(&pitched_ptr, extent.template cuda_extent<T>());
32 T* ptr =
reinterpret_cast<T*
>(pitched_ptr.ptr);
33 size_t pitch_bytes = pitched_ptr.pitch;
34 size_t pitch_bytes_area = pitched_ptr.pitch * extent.height();
35 return Buffer3DView<T>{ptr, pitch_bytes, pitch_bytes_area, Offset3D::Zero(), extent};
A view interface for any array-like liner memory, which can be constructed from DeviceBuffer/DeviceVe...