Struct faiss::gpu::StackDeviceMemory::Stack
-
struct Stack
Public Functions
-
Stack(GpuResources *res, int device, size_t size)
Constructor that allocates memory via cudaMalloc.
-
~Stack()
-
size_t getSizeAvailable() const
Returns how much size is available for an allocation without calling cudaMalloc
-
char *getAlloc(size_t size, cudaStream_t stream)
Obtains an allocation; all allocations are guaranteed to be 16 byte aligned
-
void returnAlloc(char *p, size_t size, cudaStream_t stream)
Returns an allocation.
-
std::string toString() const
Returns the stack state.
Public Members
-
GpuResources *res_
Our GpuResources object.
-
int device_
Device this allocation is on.
-
char *alloc_
Where our temporary memory buffer is allocated; we allocate starting 16 bytes into this
-
size_t allocSize_
Total size of our allocation.
-
char *start_
Our temporary memory region; [start_, end_) is valid.
-
char *end_
-
char *head_
Stack head within [start, end)
-
std::list<Range> lastUsers_
List of previous last users of allocations on our stack, for possible synchronization purposes
-
size_t highWaterMemoryUsed_
What’s the high water mark in terms of memory used from the temporary buffer?
-
Stack(GpuResources *res, int device, size_t size)