alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
lvl.hpp
Go to the documentation of this file.
1/* Copyright 2025 René Widera
2 * SPDX-License-Identifier: MPL-2.0
3 */
4
5#pragma once
6
8
9#include <string>
10
12{
13
14 namespace detail
15 {
16 struct LogLvlBase
17 {
18 };
19
20 template<typename T_Logger0, typename T_Logger1>
21 struct AggregatedLogger : LogLvlBase
22 {
23 static std::string getName()
24 {
25 return T_Logger0::getName();
26 }
27
28 static constexpr size_t mask()
29 {
30 return T_Logger0::mask() + T_Logger1::mask();
31 }
32 };
33 } // namespace detail
34
35 namespace trait
36 {
37 template<typename T_DeviceKind>
38 struct IsLogLvl : std::is_base_of<detail::LogLvlBase, T_DeviceKind>
39 {
40 };
41 } // namespace trait
42
43 template<typename T_LogLvl>
45
46 namespace concepts
47 {
48 /** Concept for log level types
49 */
50 template<typename T_DeviceKind>
52 } // namespace concepts
53
54 constexpr bool operator==(concepts::Level auto lhs, concepts::Level auto rhs)
55 {
56 return std::is_same_v<ALPAKA_TYPEOF(lhs), ALPAKA_TYPEOF(rhs)>;
57 }
58
59 constexpr bool operator!=(concepts::Level auto lhs, concepts::Level auto rhs)
60 {
61 return !(lhs == rhs);
62 }
63
64 constexpr auto operator+(concepts::Level auto lhs, concepts::Level auto rhs)
65 {
66 return detail::AggregatedLogger<ALPAKA_TYPEOF(lhs), ALPAKA_TYPEOF(rhs)>{};
67 }
68
69 struct Device : detail::LogLvlBase
70 {
71 static std::string getName()
72 {
73 return "Device";
74 }
75
76 static constexpr size_t mask()
77 {
78 return 1;
79 }
80 };
81
82 constexpr auto device = Device{};
83
84 struct Event : detail::LogLvlBase
85 {
86 static std::string getName()
87 {
88 return "Event";
89 }
90
91 static constexpr size_t mask()
92 {
93 return 2;
94 }
95 };
96
97 constexpr auto event = Event{};
98
99 struct Memory : detail::LogLvlBase
100 {
101 static std::string getName()
102 {
103 return "Memory";
104 }
105
106 static constexpr size_t mask()
107 {
108 return 4;
109 }
110 };
111
112 constexpr auto memory = Memory{};
113
114 struct Queue : detail::LogLvlBase
115 {
116 static std::string getName()
117 {
118 return "Queue";
119 }
120
121 static constexpr size_t mask()
122 {
123 return 8;
124 }
125 };
126
127 constexpr auto queue = Queue{};
128
129 struct Kernel : detail::LogLvlBase
130 {
131 static std::string getName()
132 {
133 return "Kernel";
134 }
135
136 static constexpr size_t mask()
137 {
138 return 16;
139 }
140 };
141
142 constexpr auto kernel = Kernel{};
143} // namespace alpaka::onHost::logger
#define ALPAKA_TYPEOF(...)
Get the type of instance.
Definition common.hpp:154
Concept for log level types.
Definition lvl.hpp:51
constexpr bool operator==(concepts::Level auto lhs, concepts::Level auto rhs)
Definition lvl.hpp:54
constexpr auto queue
Definition lvl.hpp:127
constexpr auto device
Definition lvl.hpp:82
constexpr auto operator+(concepts::Level auto lhs, concepts::Level auto rhs)
Definition lvl.hpp:64
constexpr auto kernel
Definition lvl.hpp:142
constexpr auto memory
Definition lvl.hpp:112
constexpr bool isLogLvl_v
Definition lvl.hpp:44
constexpr bool operator!=(concepts::Level auto lhs, concepts::Level auto rhs)
Definition lvl.hpp:59
static constexpr size_t mask()
Definition lvl.hpp:76
static std::string getName()
Definition lvl.hpp:71
static constexpr size_t mask()
Definition lvl.hpp:91
static std::string getName()
Definition lvl.hpp:86
static constexpr size_t mask()
Definition lvl.hpp:136
static std::string getName()
Definition lvl.hpp:131
static std::string getName()
Definition lvl.hpp:101
static constexpr size_t mask()
Definition lvl.hpp:106
static constexpr size_t mask()
Definition lvl.hpp:121
static std::string getName()
Definition lvl.hpp:116