11 #include "GpuResources.h"
12 #include "utils/StackDeviceMemory.h"
13 #include "utils/DeviceUtils.h"
14 #include <unordered_map>
17 namespace faiss {
namespace gpu {
73 bool isInitialized(
int device)
const;
77 static size_t getDefaultTempMemForGPU(
int device,
size_t requested);
81 std::unordered_map<int, cudaStream_t> defaultStreams_;
85 std::unordered_map<int, cudaStream_t> userDefaultStreams_;
88 std::unordered_map<int, std::vector<cudaStream_t> > alternateStreams_;
91 std::unordered_map<int, cudaStream_t> asyncCopyStreams_;
94 std::unordered_map<int, cublasHandle_t> blasHandles_;
97 std::unordered_map<int, std::unique_ptr<StackDeviceMemory> > memory_;
100 void* pinnedMemAlloc_;
101 size_t pinnedMemAllocSize_;
108 size_t pinnedMemSize_;
111 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 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.