Loading...
Searching...
No Matches
callback_memory_resource.hpp
1/*
2 * SPDX-FileCopyrightText: Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 * SPDX-License-Identifier: Apache-2.0
4 */
5#pragma once
6
7#include <rmm/detail/export.hpp>
8#include <rmm/mr/detail/callback_memory_resource_impl.hpp>
10
11#include <cuda/memory_resource>
12#include <cuda/stream>
13
14#include <cstddef>
15#include <functional>
16
17RMM_NAMESPACE_BEGIN
18namespace mr {
23
41using allocate_callback_t = std::function<void*(cuda::stream_ref, std::size_t, std::size_t, void*)>;
42
62 std::function<void(cuda::stream_ref, void*, std::size_t, std::size_t, void*)>;
63
64namespace detail {
65class callback_memory_resource_impl;
66}
67
76 : public cuda::mr::shared_resource<detail::callback_memory_resource_impl> {
77 using shared_base = cuda::mr::shared_resource<detail::callback_memory_resource_impl>;
78
79 public:
83 RMM_CONSTEXPR_FRIEND void get_property(callback_memory_resource const&,
84 cuda::mr::device_accessible) noexcept
85 {
86 }
87
104 deallocate_callback_t deallocate_callback,
105 void* allocate_callback_arg = nullptr,
106 void* deallocate_callback_arg = nullptr);
107
108 callback_memory_resource() = delete;
109 ~callback_memory_resource() = default;
110};
111
112static_assert(cuda::mr::resource_with<callback_memory_resource, cuda::mr::device_accessible>,
113 "callback_memory_resource does not satisfy the cuda::mr::resource concept");
114 // end of group
116} // namespace mr
117RMM_NAMESPACE_END
friend void get_property(callback_memory_resource const &, cuda::mr::device_accessible) noexcept
Enables the cuda::mr::device_accessible property.
Definition callback_memory_resource.hpp:83
callback_memory_resource(allocate_callback_t allocate_callback, deallocate_callback_t deallocate_callback, void *allocate_callback_arg=nullptr, void *deallocate_callback_arg=nullptr)
Construct a new callback memory resource.
std::function< void *(cuda::stream_ref, std::size_t, std::size_t, void *)> allocate_callback_t
Callback function type used by callback memory resource for allocation.
Definition callback_memory_resource.hpp:41
std::function< void(cuda::stream_ref, void *, std::size_t, std::size_t, void *)> deallocate_callback_t
Callback function type used by callback_memory_resource for deallocation.
Definition callback_memory_resource.hpp:61