33#ifndef GKO_PUBLIC_CORE_BASE_MEMORY_HPP_
34#define GKO_PUBLIC_CORE_BASE_MEMORY_HPP_
37#include <ginkgo/core/base/fwd_decls.hpp>
38#include <ginkgo/core/base/types.hpp>
52 virtual void* allocate(
size_type num_bytes) = 0;
54 virtual void deallocate(
void* ptr) = 0;
108 virtual bool check_environment(
int device_id,
109 GKO_HIP_STREAM_STRUCT*
stream)
const
121 void* allocate(
size_type num_bytes)
override;
123 void deallocate(
void* ptr)
override;
132 void* allocate(
size_type num_bytes)
override;
134 void deallocate(
void* ptr)
override;
143 void* allocate(
size_type num_bytes)
override;
145 void deallocate(
void* ptr)
override;
161 void* allocate(
size_type num_bytes)
override;
163 void deallocate(
void* ptr)
override;
183 void* allocate(
size_type num_bytes)
override;
185 void deallocate(
void* ptr)
override;
202 void* allocate(
size_type num_bytes)
override;
204 void deallocate(
void* ptr)
override;
213 void* allocate(
size_type num_bytes)
override;
215 void deallocate(
void* ptr)
override;
220 bool check_environment(
int device_id,
221 GKO_HIP_STREAM_STRUCT*
stream)
const override;
224 GKO_HIP_STREAM_STRUCT* stream_;
233 void* allocate(
size_type num_bytes)
override;
235 void deallocate(
void* ptr)
override;
242 bool check_environment(
int device_id,
243 GKO_HIP_STREAM_STRUCT*
stream)
const override;
256 void* allocate(
size_type num_bytes)
override;
258 void deallocate(
void* ptr)
override;
263 bool check_environment(
int device_id,
264 GKO_HIP_STREAM_STRUCT*
stream)
const override;
Provides generic allocation and deallocation functionality to be used by an Executor.
Definition memory.hpp:48
Implement this interface to provide an allocator for OmpExecutor or ReferenceExecutor.
Definition memory.hpp:62
Allocator using new/delete.
Definition memory.hpp:119
Implement this interface to provide an allocator for CudaExecutor.
Definition memory.hpp:68
Allocator using cudaMalloc.
Definition memory.hpp:130
Definition memory.hpp:141
bool check_environment(int device_id, CUstream_st *stream) const override
Checks if the allocator can be used safely with the provided device ID and stream.
This is the Executor subclass which represents the CUDA device.
Definition executor.hpp:1513
Definition memory.hpp:181
Definition memory.hpp:159
Implement this interface to provide an allocator for HipExecutor.
Definition memory.hpp:93
Definition memory.hpp:200
Definition memory.hpp:211
This is the Executor subclass which represents the HIP enhanced device.
Definition executor.hpp:1727
Definition memory.hpp:254
Definition memory.hpp:231
The Ginkgo namespace.
Definition abstract_factory.hpp:48
constexpr T one()
Returns the multiplicative identity for T.
Definition math.hpp:803
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:120