结构体 faiss::gpu::StackDeviceMemory::Stack

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)

返回一个分配。

std::string toString() const

返回堆栈状态。

公共成员

GpuResources *res_

我们的 GpuResources 对象。

int device_

此分配所在的设备。

char *alloc_

我们的临时内存缓冲区分配在哪里;我们从这个位置的 16 个字节处开始分配。

size_t allocSize_

我们分配的总大小。

char *start_

我们的临时内存区域;[start_, end_) 是有效的。

char *end_
char *head_

[start, end) 中的 Stack 头。

std::list<Range> lastUsers_

我们堆栈上分配的先前最后用户的列表,用于可能的同步目的。

size_t highWaterMemoryUsed_

临时缓冲区中使用的内存的最高水位线是多少?