21 BufferCache(MTL::Device*
device);
24 MTL::Buffer* reuse_from_cache(
size_t size);
25 void recycle_to_cache(MTL::Buffer* buf);
26 int release_cached_buffers(
size_t min_bytes_to_free);
35 BufferHolder(MTL::Buffer* buf_) : buf(buf_), prev(
nullptr), next(
nullptr) {}
42 void add_at_head(BufferHolder* to_add);
43 void remove_from_list(BufferHolder* to_remove);
46 MTL::Heap* heap_{
nullptr};
48 std::multimap<size_t, BufferHolder*> buffer_pool_;
63 return active_memory_;
69 std::unique_lock lk(mutex_);
73 return buffer_cache_.cache_size();
86 static constexpr int small_size_ = 256;
87 static constexpr int heap_size_ = 1 << 20;
94 BufferCache buffer_cache_;
101 size_t active_memory_{0};
102 size_t peak_memory_{0};
103 size_t max_pool_size_;
104 size_t wired_limit_{0};
106 size_t num_resources_{0};
107 size_t resource_limit_{0};
Definition allocator.h:39
Definition allocator.h:12