33 #include <unordered_map>
40 class DeviceMemoryManager;
57 static void*
Malloc(
size_t byte_size,
const Device& device);
60 static void Free(
void* ptr,
const Device& device);
64 static void Memcpy(
void* dst_ptr,
106 size_t num_bytes) = 0;
129 const std::shared_ptr<DeviceMemoryManager>& device_mm);
133 void*
Malloc(
size_t byte_size,
const Device& device)
override;
136 void Free(
void* ptr,
const Device& device)
override;
140 void Memcpy(
void* dst_ptr,
144 size_t num_bytes)
override;
164 void*
Malloc(
size_t byte_size,
const Device& device)
override;
167 void Free(
void* ptr,
const Device& device)
override;
171 void Memcpy(
void* dst_ptr,
175 size_t num_bytes)
override;
178 #ifdef BUILD_CUDA_MODULE
185 void* Malloc(
size_t byte_size,
const Device& device)
override;
188 void Free(
void* ptr,
const Device& device)
override;
192 void Memcpy(
void* dst_ptr,
196 size_t num_bytes)
override;
199 bool IsCUDAPointer(
const void* ptr,
const Device& device);
Definition: MemoryManager.h:160
void * Malloc(size_t byte_size, const Device &device) override
Definition: MemoryManagerCPU.cpp:34
void Memcpy(void *dst_ptr, const Device &dst_device, const void *src_ptr, const Device &src_device, size_t num_bytes) override
Definition: MemoryManagerCPU.cpp:49
void Free(void *ptr, const Device &device) override
Frees previously allocated memory at address ptr on device device.
Definition: MemoryManagerCPU.cpp:43
Definition: MemoryManager.h:124
CachedMemoryManager(const std::shared_ptr< DeviceMemoryManager > &device_mm)
Definition: MemoryManagerCached.cpp:492
void Free(void *ptr, const Device &device) override
Frees previously allocated memory at address ptr on device device.
Definition: MemoryManagerCached.cpp:510
static void ReleaseCache()
Definition: MemoryManagerCached.cpp:530
void Memcpy(void *dst_ptr, const Device &dst_device, const void *src_ptr, const Device &src_device, size_t num_bytes) override
Definition: MemoryManagerCached.cpp:518
std::shared_ptr< DeviceMemoryManager > device_mm_
Definition: MemoryManager.h:155
void * Malloc(size_t byte_size, const Device &device) override
Definition: MemoryManagerCached.cpp:502
Interface for all concrete memory manager classses.
Definition: MemoryManager.h:89
virtual void Memcpy(void *dst_ptr, const Device &dst_device, const void *src_ptr, const Device &src_device, size_t num_bytes)=0
virtual void * Malloc(size_t byte_size, const Device &device)=0
virtual void Free(void *ptr, const Device &device)=0
Frees previously allocated memory at address ptr on device device.
virtual ~DeviceMemoryManager()=default
Definition: MemoryManager.h:53
static void MemcpyToHost(void *host_ptr, const void *src_ptr, const Device &src_device, size_t num_bytes)
Same as Memcpy, but with host (CPU:0) as default dst_device.
Definition: MemoryManager.cpp:94
static std::shared_ptr< DeviceMemoryManager > GetDeviceMemoryManager(const Device &device)
Internally dispatches the appropriate DeviceMemoryManager instance.
Definition: MemoryManager.cpp:102
static void Memcpy(void *dst_ptr, const Device &dst_device, const void *src_ptr, const Device &src_device, size_t num_bytes)
Definition: MemoryManager.cpp:54
static void MemcpyFromHost(void *dst_ptr, const Device &dst_device, const void *host_ptr, size_t num_bytes)
Same as Memcpy, but with host (CPU:0) as default src_device.
Definition: MemoryManager.cpp:86
static void * Malloc(size_t byte_size, const Device &device)
Definition: MemoryManager.cpp:41
static void Free(void *ptr, const Device &device)
Frees previously allocated memory at address ptr on device device.
Definition: MemoryManager.cpp:47
Definition: PinholeCameraIntrinsic.cpp:35