alpaka
Abstraction Library for Parallel Kernel Acceleration
AtomicHierarchy.hpp
Go to the documentation of this file.
1 /* Copyright 2020 Benjamin Worpitz, RenĂ© Widera, Bernhard Manfred Gruber
2  * SPDX-License-Identifier: MPL-2.0
3  */
4 
5 #pragma once
6 
9 #include "alpaka/meta/Unique.hpp"
10 
11 #include <tuple>
12 
13 namespace alpaka
14 {
15  //! build a single class to inherit from different atomic implementations
16  //
17  // This implementation inherit from all three hierarchies.
18  // The multiple usage of the same type for different levels is allowed.
19  // The class provide the feature that each atomic operation can be focused
20  // to a hierarchy level in alpaka. A operation to a hierarchy is independent
21  // to the memory hierarchy.
22  //
23  // \tparam TGridAtomic atomic implementation for atomic operations between grids within a device
24  // \tparam TBlockAtomic atomic implementation for atomic operations between blocks within a grid
25  // \tparam TThreadAtomic atomic implementation for atomic operations between threads within a block
26  template<typename TGridAtomic, typename TBlockAtomic, typename TThreadAtomic>
28  TGridAtomic,
29  TBlockAtomic,
30  TThreadAtomic,
34 } // namespace alpaka
typename detail::UniqueImpl< TList >::type Unique
Trait that returns a list with only unique (no equal) types (a set). Duplicates will be filtered out.
Definition: Unique.hpp:40
The alpaka accelerator library.
Tag used in class inheritance hierarchies that describes that a specific interface (TInterface) is im...
Definition: Interface.hpp:15