alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
Traits.hpp
Go to the documentation of this file.
1/* Copyright 2022 Benjamin Worpitz, Erik Zenker, Matthias Werner, René Widera, Bernhard Manfred Gruber
2 * SPDX-License-Identifier: MPL-2.0
3 */
4
5#pragma once
6
9
10#include <type_traits>
11
12namespace alpaka
13{
15 {
16 };
17
18 //! The block shared static memory operation trait.
19 namespace trait
20 {
21 //! The block shared static memory variable allocation operation trait.
22 template<typename T, std::size_t TuniqueId, typename TBlockSharedMemSt, typename TSfinae = void>
24 //! The block shared static memory free operation trait.
25 template<typename TBlockSharedMemSt, typename TSfinae = void>
27 } // namespace trait
28
29 //! Declare a block shared variable.
30 //!
31 //! The variable is uninitialized and not default constructed!
32 //! The variable can be accessed by all threads within a block.
33 //! Access to the variable is not thread safe.
34 //!
35 //! \tparam T The element type.
36 //! \tparam TuniqueId id those is unique inside a kernel
37 //! \tparam TBlockSharedMemSt The block shared allocator implementation type.
38 //! \param blockSharedMemSt The block shared allocator implementation.
39 //! \return Uninitialized variable stored in shared memory.
41 template<typename T, std::size_t TuniqueId, typename TBlockSharedMemSt>
42 ALPAKA_FN_ACC auto declareSharedVar(TBlockSharedMemSt const& blockSharedMemSt) -> T&
43 {
46 }
47
48 //! Frees all memory used by block shared variables.
49 //!
50 //! \tparam TBlockSharedMemSt The block shared allocator implementation type.
51 //! \param blockSharedMemSt The block shared allocator implementation.
53 template<typename TBlockSharedMemSt>
54 ALPAKA_FN_ACC auto freeSharedVars(TBlockSharedMemSt& blockSharedMemSt) -> void
55 {
58 }
59} // namespace alpaka
#define ALPAKA_FN_ACC
All functions that can be used on an accelerator have to be attributed with ALPAKA_FN_ACC or ALPAKA_F...
Definition Common.hpp:38
#define ALPAKA_NO_HOST_ACC_WARNING
Disable nvcc warning: 'calling a host function from host device function.' Usage: ALPAKA_NO_HOST_ACC_...
Definition Common.hpp:82
typename detail::ImplementationBaseType< TInterface, TDerived >::type ImplementationBase
Returns the type that implements the given interface in the inheritance hierarchy.
Definition Interface.hpp:66
The alpaka accelerator library.
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_ACC auto freeSharedVars(TBlockSharedMemSt &blockSharedMemSt) -> void
Frees all memory used by block shared variables.
Definition Traits.hpp:54
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_ACC auto declareSharedVar(TBlockSharedMemSt const &blockSharedMemSt) -> T &
Declare a block shared variable.
Definition Traits.hpp:42
The block shared static memory variable allocation operation trait.
Definition Traits.hpp:23
The block shared static memory free operation trait.
Definition Traits.hpp:26