13 #include "GpuResources.h"
14 #include "utils/StackDeviceMemory.h"
15 #include "utils/DeviceUtils.h"
16 #include <unordered_map>
19 namespace faiss {
namespace gpu {
49 cublasHandle_t getBlasHandle(
int device)
override;
51 cudaStream_t getDefaultStream(
int device)
override;
53 std::vector<cudaStream_t> getAlternateStreams(
int device)
override;
57 std::pair<void*, size_t> getPinnedMemory()
override;
59 cudaStream_t getAsyncCopyStream(
int device)
override;
63 std::unordered_map<int, cudaStream_t> defaultStreams_;
66 std::unordered_map<int, std::vector<cudaStream_t> > alternateStreams_;
69 std::unordered_map<int, cudaStream_t> asyncCopyStreams_;
72 std::unordered_map<int, cublasHandle_t> blasHandles_;
75 std::unordered_map<int, std::unique_ptr<StackDeviceMemory> > memory_;
78 void* pinnedMemAlloc_;
79 size_t pinnedMemAllocSize_;
82 float tempMemFraction_;
92 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.