14 #include "GpuResources.h"
15 #include "utils/StackDeviceMemory.h"
16 #include "utils/DeviceUtils.h"
17 #include <unordered_map>
20 namespace faiss {
namespace gpu {
50 cublasHandle_t getBlasHandle(
int device)
override;
52 cudaStream_t getDefaultStream(
int device)
override;
54 std::vector<cudaStream_t> getAlternateStreams(
int device)
override;
58 std::pair<void*, size_t> getPinnedMemory()
override;
60 cudaStream_t getAsyncCopyStream(
int device)
override;
64 std::unordered_map<int, cudaStream_t> defaultStreams_;
67 std::unordered_map<int, std::vector<cudaStream_t>> alternateStreams_;
70 std::unordered_map<int, cudaStream_t> asyncCopyStreams_;
73 std::unordered_map<int, cublasHandle_t> blasHandles_;
76 std::unordered_map<int, std::unique_ptr<StackDeviceMemory>> memory_;
79 void* pinnedMemAlloc_;
80 size_t pinnedMemAllocSize_;
83 float tempMemFraction_;
93 size_t pinnedMemSize_;
void setTempMemoryFraction(float fraction)
void initializeForDevice(int device) override
Internal system calls.
void setTempMemory(size_t size)
void setPinnedMemory(size_t size)
Manages temporary memory allocations on a GPU device.