19 #include <rmm/detail/export.hpp>
24 #include <cuda_runtime_api.h>
32 namespace RMM_NAMESPACE {
47 template <
typename Upstream>
61 : upstream_mr_{upstream_resource}
95 int8_t min_size_exponent,
96 int8_t max_size_exponent)
97 : upstream_mr_{upstream_resource}
113 for (
auto i = min_size_exponent; i <= max_size_exponent; i++) {
121 int8_t min_size_exponent,
122 int8_t max_size_exponent)
129 for (
auto i = min_size_exponent; i <= max_size_exponent; i++) {
161 void add_bin(std::size_t allocation_size,
162 std::optional<device_async_resource_ref> bin_resource = std::nullopt)
166 if (bin_resource.has_value()) {
167 resource_bins_.insert({allocation_size, bin_resource.value()});
168 }
else if (resource_bins_.count(allocation_size) == 0) {
169 owned_bin_resources_.push_back(
171 resource_bins_.insert({allocation_size, owned_bin_resources_.back().get()});
186 auto iter = resource_bins_.lower_bound(bytes);
196 return (iter != resource_bins_.cend()) ? iter->second : get_upstream_resource();
211 if (bytes <= 0) {
return nullptr; }
212 return get_resource_ref(bytes).allocate_async(bytes, stream);
217 void do_deallocate(
void* ptr, std::size_t bytes, cuda_stream_view stream)
override 219 get_resource_ref(bytes).deallocate_async(ptr, bytes, stream);
225 std::vector<std::unique_ptr<fixed_size_memory_resource<Upstream>>> owned_bin_resources_;
227 std::map<std::size_t, device_async_resource_ref> resource_bins_;
aligned.hpp
rmm::cuda_stream_view
CUDA 流的强类型非拥有包装器,带默认构造函数。
定义: cuda_stream_view.hpp:39
rmm::mr::binning_memory_resource
从与 bin 大小关联的上游资源分配内存。
rmm::mr::binning_memory_resource::binning_memory_resource
binning_memory_resource(Upstream *upstream_resource)
构造一个新的 binning 内存资源对象。
rmm::mr::binning_memory_resource::get_upstream_resource
device_async_resource_ref get_upstream_resource() const noexcept
定义: binning_memory_resource.hpp:138
binning_memory_resource(device_async_resource_ref upstream_resource, int8_t min_size_exponent, int8_t max_size_exponent)
~binning_memory_resource() override=default
销毁 binning_memory_resource 并释放从上游资源分配的所有内存。
binning_memory_resource(Upstream *upstream_resource, int8_t min_size_exponent, int8_t max_size_exponent)
binning_memory_resource(device_async_resource_ref upstream_resource)
定义: binning_memory_resource.hpp:57
rmm::mr::binning_memory_resource::add_bin
向此资源添加一个 bin 分配器。
定义: binning_memory_resource.hpp:158
rmm::mr::device_memory_resource
定义: device_memory_resource.hpp:92
rmm::mr::fixed_size_memory_resource
分配单一固定大小内存块的 device_memory_resource。