alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
include
alpaka
api
host
block
mem
SingleThreadStaticShared.hpp
Go to the documentation of this file.
1
/* Copyright 2024 René Widera
2
* SPDX-License-Identifier: MPL-2.0
3
*/
4
5
#pragma once
6
7
#include "
alpaka/api/host/block/mem/SharedStorage.hpp
"
8
#include "
alpaka/core/common.hpp
"
9
10
#include <cstdint>
11
12
namespace
alpaka::onAcc
13
{
14
namespace
cpu
15
{
16
template
<std::
size_t
TDataAlignBytes>
17
struct
SingleThreadStaticShared
:
private
detail::SharedStorage<TDataAlignBytes>
18
{
19
using
Base
= detail::SharedStorage<TDataAlignBytes>;
20
21
template
<
typename
T,
size_t
T_unique>
22
T&
allocVar
()
23
{
24
auto
* data = Base::template getVarPtr<T>(T_unique);
25
26
if
(!data)
27
{
28
Base::template alloc<T>(T_unique);
29
data = Base::template getLatestVarPtr<T>();
30
}
31
ALPAKA_ASSERT
(data !=
nullptr
);
32
return
*data;
33
}
34
35
template
<
typename
T,
size_t
T_unique>
36
T*
allocDynamic
(uint32_t numBytes)
37
{
38
auto
* data = Base::template getVarPtr<T>(T_unique);
39
40
if
(!data)
41
{
42
Base::template
allocDynamic<T>
(T_unique, numBytes);
43
data = Base::template getLatestVarPtr<T>();
44
}
45
ALPAKA_ASSERT
(data !=
nullptr
);
46
return
data;
47
}
48
49
void
reset
()
50
{
51
}
52
};
53
}
// namespace cpu
54
}
// namespace alpaka::onAcc
ALPAKA_ASSERT
#define ALPAKA_ASSERT(...)
The assert can be explicit disabled by defining NDEBUG.
Definition
Assert.hpp:14
SharedStorage.hpp
common.hpp
alpaka::onAcc::cpu
Definition
SharedStorage.hpp:21
alpaka::onAcc
functionality which is usable on the accelerator compute device from within a kernel.
Definition
executor.hpp:38
alpaka::onAcc::cpu::SingleThreadStaticShared
Definition
SingleThreadStaticShared.hpp:18
alpaka::onAcc::cpu::SingleThreadStaticShared::Base
detail::SharedStorage< TDataAlignBytes > Base
Definition
SingleThreadStaticShared.hpp:19
alpaka::onAcc::cpu::SingleThreadStaticShared::reset
void reset()
Definition
SingleThreadStaticShared.hpp:49
alpaka::onAcc::cpu::SingleThreadStaticShared::allocVar
T & allocVar()
Definition
SingleThreadStaticShared.hpp:22
alpaka::onAcc::cpu::SingleThreadStaticShared::allocDynamic
T * allocDynamic(uint32_t numBytes)
Definition
SingleThreadStaticShared.hpp:36
Generated on
for alpaka by
1.16.1