13 #include "GpuResources.h"
14 #include "utils/StackDeviceMemory.h"
15 #include "utils/DeviceUtils.h"
16 #include <unordered_map>
19 namespace faiss {
namespace gpu {
70 std::unordered_map<int, cudaStream_t> defaultStreams_;
74 std::unordered_map<int, cudaStream_t> userDefaultStreams_;
77 std::unordered_map<int, std::vector<cudaStream_t> > alternateStreams_;
80 std::unordered_map<int, cudaStream_t> asyncCopyStreams_;
83 std::unordered_map<int, cublasHandle_t> blasHandles_;
86 std::unordered_map<int, std::unique_ptr<StackDeviceMemory> > memory_;
89 void* pinnedMemAlloc_;
90 size_t pinnedMemAllocSize_;
93 float tempMemFraction_;
103 size_t pinnedMemSize_;
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 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.