1#ifndef AMREX_GPU_MEMORY_H_
2#define AMREX_GPU_MEMORY_H_
3#include <AMReX_Config.H>
18 [[nodiscard]]
void *
operator new (std::size_t len)
23 void operator delete (
void *ptr)
35 [[nodiscard]]
void *
operator new (std::size_t len)
40 void operator delete (
void *ptr)
55requires (std::is_trivially_copyable_v<T>)
69 dp = (T*)(std::malloc(
sizeof(T)));
78 dp = (T*)(std::malloc(
sizeof(T)));
91 [[nodiscard]] T*
dataPtr () {
return dp; }
92 [[nodiscard]] T
const*
dataPtr ()
const {
return dp; }
109 DeviceScalar () =
default;
110 ~DeviceScalar () =
default;
112 [[nodiscard]] T* dataPtr () {
return &d; }
113 [[nodiscard]] T
const* dataPtr ()
const {
return &d; }
114 [[nodiscard]] T dataValue ()
const {
return d; }
128 static_assert(
sizeof(T) < 0,
"We must specialize struct SharedMemory");
133#ifndef AMREX_USE_SYCL
141 extern __shared__
double amrex_sm_double[];)
142 return amrex_sm_double;
151 extern __shared__
float amrex_sm_float[];)
152 return amrex_sm_float;
161 extern __shared__
long amrex_sm_long[];)
162 return amrex_sm_long;
171 extern __shared__
long long amrex_sm_long_long[];)
172 return amrex_sm_long_long;
181 extern __shared__
int amrex_sm_int[];)
191 extern __shared__
short amrex_sm_short[];)
192 return amrex_sm_short;
201 extern __shared__
char amrex_sm_char[];)
202 return amrex_sm_char;
211 extern __shared__
unsigned long amrex_sm_ulong[];)
212 return amrex_sm_ulong;
221 extern __shared__
unsigned long long amrex_sm_ulonglong[];)
222 return amrex_sm_ulonglong;
231 extern __shared__
unsigned int amrex_sm_uint[];)
232 return amrex_sm_uint;
241 extern __shared__
unsigned short amrex_sm_ushort[];)
242 return amrex_sm_ushort;
251 extern __shared__
unsigned char amrex_sm_uchar[];)
252 return amrex_sm_uchar;
261 extern __shared__
bool amrex_sm_bool[];)
262 return amrex_sm_bool;
#define AMREX_HIP_OR_CUDA(a, b)
Definition AMReX_GpuControl.H:17
#define AMREX_GPU_DEVICE
Definition AMReX_GpuQualifiers.H:18
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:132
virtual void free(void *pt)=0
A pure virtual function for deleting the arena pointed to by pt.
virtual void * alloc(std::size_t sz)=0
Arena * The_Managed_Arena()
Definition AMReX_Arena.cpp:850
Arena * The_Pinned_Arena()
Definition AMReX_Arena.cpp:860
Arena * The_Arena()
Definition AMReX_Arena.cpp:820
Definition AMReX_BaseFwd.H:55
bool inLaunchRegion() noexcept
Definition AMReX_GpuControl.H:88
void dtoh_memcpy(void *p_h, const void *p_d, const std::size_t sz) noexcept
Definition AMReX_GpuDevice.H:496
void htod_memcpy(void *p_d, const void *p_h, const std::size_t sz) noexcept
Definition AMReX_GpuDevice.H:488
const int[]
Definition AMReX_BLProfiler.cpp:1664
Definition AMReX_GpuMemory.H:48
Deleter(Arena *ar) noexcept
Definition AMReX_GpuMemory.H:50
void operator()(void *pt) const noexcept
Definition AMReX_GpuMemory.H:51
Arena * m_arena
Definition AMReX_GpuMemory.H:49
Definition AMReX_GpuMemory.H:57
~DeviceScalar()
Definition AMReX_GpuMemory.H:83
T * dataPtr()
Definition AMReX_GpuMemory.H:91
DeviceScalar(DeviceScalar &&)=delete
DeviceScalar()
Definition AMReX_GpuMemory.H:65
DeviceScalar(T init_val)
Definition AMReX_GpuMemory.H:73
T dataValue() const
Definition AMReX_GpuMemory.H:93
DeviceScalar(DeviceScalar const &)=delete
T const * dataPtr() const
Definition AMReX_GpuMemory.H:92
Definition AMReX_GpuMemory.H:14
Definition AMReX_GpuMemory.H:31
__device__ bool * dataPtr() noexcept
Definition AMReX_GpuMemory.H:259
__device__ char * dataPtr() noexcept
Definition AMReX_GpuMemory.H:199
__device__ double * dataPtr() noexcept
Definition AMReX_GpuMemory.H:139
__device__ float * dataPtr() noexcept
Definition AMReX_GpuMemory.H:149
__device__ int * dataPtr() noexcept
Definition AMReX_GpuMemory.H:179
__device__ long * dataPtr() noexcept
Definition AMReX_GpuMemory.H:159
__device__ long long * dataPtr() noexcept
Definition AMReX_GpuMemory.H:169
__device__ short * dataPtr() noexcept
Definition AMReX_GpuMemory.H:189
__device__ unsigned char * dataPtr() noexcept
Definition AMReX_GpuMemory.H:249
__device__ unsigned int * dataPtr() noexcept
Definition AMReX_GpuMemory.H:229
__device__ unsigned long * dataPtr() noexcept
Definition AMReX_GpuMemory.H:209
__device__ unsigned long long * dataPtr() noexcept
Definition AMReX_GpuMemory.H:219
__device__ unsigned short * dataPtr() noexcept
Definition AMReX_GpuMemory.H:239
Definition AMReX_GpuMemory.H:126
__device__ T * dataPtr() noexcept
Definition AMReX_GpuMemory.H:127