11#include <promeki/config.h>
13#if PROMEKI_ENABLE_CUDA
20PROMEKI_NAMESPACE_BEGIN
32class CudaHostBufferImpl :
public HostMappedBufferImpl {
42 CudaHostBufferImpl(
const MemSpace &ms,
size_t bytes,
size_t align);
45 ~CudaHostBufferImpl()
override;
48 CudaHostBufferImpl *_promeki_clone()
const override;
63class CudaDeviceBufferImpl :
public BufferImpl {
73 CudaDeviceBufferImpl(
const MemSpace &ms,
size_t bytes,
size_t align);
76 ~CudaDeviceBufferImpl()
override;
78 MemSpace memSpace()
const override {
return _memSpace; }
79 size_t allocSize()
const override {
return _allocSize; }
80 size_t align()
const override {
return _align; }
83 void *mappedHostData()
const override {
return nullptr; }
95 void *devicePtr()
const {
return _devicePtr; }
97 BufferRequest mapAcquire(MemDomain domain, MapFlags flags)
override;
98 BufferRequest mapRelease(MemDomain domain)
override;
101 Error fill(
char value,
size_t offset,
size_t bytes)
override;
104 Error copyFromHost(
const void *src,
size_t bytes,
size_t offset)
override;
107 CudaDeviceBufferImpl *_promeki_clone()
const override;
110 void *_devicePtr =
nullptr;
111 size_t _allocSize = 0;