12 #include "GpuResources.h"
13 #include "utils/StackDeviceMemory.h"
14 #include "utils/DeviceUtils.h"
15 #include <unordered_map>
18 namespace faiss {
namespace gpu {
73 std::unordered_map<int, cudaStream_t> defaultStreams_;
77 std::unordered_map<int, cudaStream_t> userDefaultStreams_;
80 std::unordered_map<int, std::vector<cudaStream_t> > alternateStreams_;
83 std::unordered_map<int, cudaStream_t> asyncCopyStreams_;
86 std::unordered_map<int, cublasHandle_t> blasHandles_;
89 std::unordered_map<int, std::unique_ptr<StackDeviceMemory> > memory_;
92 void* pinnedMemAlloc_;
93 size_t pinnedMemAllocSize_;
96 float tempMemFraction_;
106 size_t pinnedMemSize_;
109 bool cudaMallocWarning_;
void setDefaultStream(int device, cudaStream_t stream)
Called to change the stream for work ordering.
cublasHandle_t getBlasHandle(int device) override
Returns the cuBLAS handle that we use for the given device.
void setTempMemoryFraction(float fraction)
void initializeForDevice(int device) override
Internal system calls.
cudaStream_t getAsyncCopyStream(int device) override
Returns the stream on which we perform async CPU <-> GPU copies.
DeviceMemory & getMemoryManager(int device) override
Returns the temporary memory manager for the given device.
void setCudaMallocWarning(bool b)
void setTempMemory(size_t size)
void setPinnedMemory(size_t size)
cudaStream_t getDefaultStream(int device) override
void setDefaultNullStreamAllDevices()
Manages temporary memory allocations on a GPU device.
std::pair< void *, size_t > getPinnedMemory() override
Returns the available CPU pinned memory buffer.
std::vector< cudaStream_t > getAlternateStreams(int device) override
Returns the set of alternative streams that we use for the given device.