类 faiss::gpu::GpuResources
-
class GpuResources
GPU端资源提供程序的基类;隐藏了 cuBLAS 句柄、CUDA 流和所有设备内存分配的配置
由 faiss::gpu::StandardGpuResourcesImpl 继承
公共函数
-
virtual ~GpuResources()
-
virtual void initializeForDevice(int device) = 0
调用以为特定设备预先分配资源。 如果未调用此方法,则将在首次需要时分配资源
-
virtual bool supportsBFloat16(int device) = 0
给定的 GPU 是否支持 bfloat16?
-
virtual cublasHandle_t getBlasHandle(int device) = 0
返回我们用于给定设备的 cuBLAS 句柄。
-
virtual cudaStream_t getDefaultStream(int device) = 0
返回我们为给定设备订购所有计算的流
-
virtual void setDefaultStream(int device, cudaStream_t stream) = 0
将设备的默认流覆盖为用户提供的流。 资源对象不拥有此流(即,它不会销毁它)。
-
virtual void *allocMemory(const AllocRequest &req) = 0
内存管理 从给定的内存空间返回一个分配,该分配相对于给定的流进行排序(即,第一个用户将是该流中的内核)。 所有分配都在内部调整大小,使其成为 16 字节的下一个最高倍数,并且保证返回的所有分配都为 16 字节对齐。
-
virtual void deallocMemory(int device, void *in) = 0
返回先前的分配。
-
virtual size_t getTempMemoryAvailable(int device) const = 0
对于 MemorySpace::Temporary,在没有 cudaMalloc 分配的情况下,有多少空间立即可用?
-
virtual cudaStream_t getAsyncCopyStream(int device) = 0
返回我们执行异步 CPU <-> GPU 复制的流。
-
bool supportsBFloat16CurrentDevice()
当前 GPU 是否支持 bfloat16?
默认提供的函数
-
cublasHandle_t getBlasHandleCurrentDevice()
使用当前设备调用 getBlasHandle。
-
cudaStream_t getDefaultStreamCurrentDevice()
使用当前设备调用 getDefaultStream。
-
size_t getTempMemoryAvailableCurrentDevice() const
使用当前设备调用 getTempMemoryAvailable。
-
GpuMemoryReservation allocMemoryHandle(const AllocRequest &req)
通过 RAII 对象返回临时内存分配。
-
void syncDefaultStream(int device)
将 CPU 与给定设备的默认流同步。
-
void syncDefaultStreamCurrentDevice()
为当前设备调用 syncDefaultStream。
-
cudaStream_t getAsyncCopyStreamCurrentDevice()
为当前设备调用 getAsyncCopyStream。
-
virtual ~GpuResources()