20 BufferCache(MTL::Device*
device);
23 MTL::Buffer* reuse_from_cache(
size_t size);
24 void recycle_to_cache(MTL::Buffer*
buf);
25 void release_cached_buffers(
size_t min_bytes_to_free);
34 BufferHolder(MTL::Buffer* buf_) :
buf(buf_),
prev(
nullptr),
next(
nullptr) {}
41 void add_at_head(BufferHolder* to_add);
42 void remove_from_list(BufferHolder* to_remove);
46 std::multimap<size_t, BufferHolder*> buffer_pool_;
57 virtual Buffer malloc(
size_t size,
bool allow_swap =
false)
override;
60 return active_memory_;
66 std::unique_lock lk(mutex_);
70 return buffer_cache_.cache_size();
82 BufferCache buffer_cache_;
87 size_t active_memory_{0};
88 size_t peak_memory_{0};
89 size_t max_pool_size_;
Definition allocator.h:39
Definition allocator.h:12