faiss::gpu::StackDeviceMemory 类
-
class StackDeviceMemory
设备内存管理器,用于从单个设备的内存区域中提供临时内存分配
公共函数
-
StackDeviceMemory(GpuResources *res, int device, size_t allocPerDevice)
分配一个新的我们管理的内存区域。
-
StackDeviceMemory(int device, void *p, size_t size, bool isOwner)
管理特定设备的内存区域,无论是否拥有所有权
-
~StackDeviceMemory()
-
int getDevice() const
-
void *allocMemory(cudaStream_t stream, size_t size)
所有请求的分配都应该是 16 字节的倍数。
-
void deallocMemory(int device, cudaStream_t, size_t size, void *p)
-
size_t getSizeAvailable() const
-
struct Stack
公共函数
-
Stack(GpuResources *res, int device, size_t size)
构造函数,通过 cudaMalloc 分配内存。
-
~Stack()
-
size_t getSizeAvailable() const
返回在不调用 cudaMalloc 的情况下,有多少大小可用于分配。
-
char *getAlloc(size_t size, cudaStream_t stream)
获取一个分配;保证所有分配都是 16 字节对齐的。
-
void returnAlloc(char *p, size_t size, cudaStream_t stream)
返回一个分配。
公共成员
-
GpuResources *res_
我们的 GpuResources 对象。
-
int device_
此分配所在的设备。
-
char *alloc_
我们的临时内存缓冲区分配在何处;我们从此缓冲区偏移 16 字节开始分配。
-
size_t allocSize_
我们分配的总大小。
-
char *start_
我们的临时内存区域;[start_, end_) 是有效的。
-
char *end_
-
size_t highWaterMemoryUsed_
从临时缓冲区中使用的内存的高水位线是什么?
-
Stack(GpuResources *res, int device, size_t size)
-
StackDeviceMemory(GpuResources *res, int device, size_t allocPerDevice)