FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
likwid_marker.hpp
Go to the documentation of this file.
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5#pragma once
6
7
13// This block enables to compile the code with and without the likwid header.
14// Since these are pre-compile macros, these are "ignored" if the code is build without
15// the likwid-library
16#ifdef LIKWID_PERFMON
17#include <likwid-marker.h>
18#else
19// cpu markers
20#define LIKWID_MARKER_INIT ((void)0)
21#define LIKWID_MARKER_THREADINIT ((void)0)
22#define LIKWID_MARKER_SWITCH ((void)0)
23#define LIKWID_MARKER_REGISTER(regionTag) ((void)0)
24#define LIKWID_MARKER_START(regionTag) ((void)0)
25#define LIKWID_MARKER_STOP(regionTag) ((void)0)
26#define LIKWID_MARKER_CLOSE ((void)0)
27#define LIKWID_MARKER_GET(regionTag, nevents, events, time, count) ((void)0)
28#endif
29
30// special case if we did not activate cuda support, this logic requires
31// that LIKWID_NVMON is only defined if LIKWID_PERFMON is also defined
32#ifndef LIKWID_NVMARKER_INIT
33//gpu markers
34#define LIKWID_NVMARKER_INIT ((void)0)
35#define LIKWID_NVMARKER_SWITCH ((void)0)
36#define LIKWID_NVMARKER_REGISTER(regionTag) ((void)0)
37#define LIKWID_NVMARKER_START(regionTag) ((void)0)
38#define LIKWID_NVMARKER_STOP(regionTag) ((void)0)
39#define LIKWID_NVMARKER_RESET(regionTag) ((void)0)
40#define LIKWID_NVMARKER_CLOSE ((void)0)
41#define LIKWID_NVMARKER_GET(name, ngpu, nevents, eventlist, time, count) ((void)0)
42#endif
43
44//these are simple aliases which should only be called once per programm, i.e. in FEAT runtime guard
46#define FEAT_MARKER_INIT LIKWID_MARKER_INIT
48#define FEAT_MARKER_THREADINIT LIKWID_MARKER_THREADINIT
50#define FEAT_MARKER_SWITCH LIKWID_MARKER_SWITCH
52#define FEAT_MARKER_CLOSE LIKWID_MARKER_CLOSE
53
54
55// Now we define three different aliases of these markers, which essentially
56// do the same thing, but can be activated seperatly...
57
58#ifdef FEAT_KERNEL_MARKER_ACTIVATED
59
60 #define FEAT_KERNEL_MARKER_REGISTER(regionTag) LIKWID_MARKER_REGISTER(regionTag)
61 #define FEAT_KERNEL_MARKER_START(regionTag) LIKWID_MARKER_START(regionTag)
62 #define FEAT_KERNEL_MARKER_STOP(regionTag) LIKWID_MARKER_STOP(regionTag)
63 #define FEAT_KERNEL_MARKER_GET(regionTag, nevents, events, time, count) LIKWID_MARKER_GET(regionTag, nevents, events, time, count)
64#else
65 #define FEAT_KERNEL_MARKER_REGISTER(regionTag) ((void)0)
66 #define FEAT_KERNEL_MARKER_START(regionTag) ((void)0)
67 #define FEAT_KERNEL_MARKER_STOP(regionTag) ((void)0)
68 #define FEAT_KERNEL_MARKER_GET(regionTag, nevents, events, time, count) ((void)0)
69
70#endif //FEAT_KERNEL_MARKER_ACTIVATED
71
72#ifdef FEAT_APPLICATION_MARKER_ACTIVATED
73 #define FEAT_APPLICATION_MARKER_REGISTER(regionTag) LIKWID_MARKER_REGISTER(regionTag)
74 #define FEAT_APPLICATION_MARKER_START(regionTag) LIKWID_MARKER_START(regionTag)
75 #define FEAT_APPLICATION_MARKER_STOP(regionTag) LIKWID_MARKER_STOP(regionTag)
76 #define FEAT_APPLICATION_MARKER_GET(regionTag, nevents, events, time, count) LIKWID_MARKER_GET(regionTag, nevents, events, time, count)
77#else
78 #define FEAT_APPLICATION_MARKER_REGISTER(regionTag) ((void)0)
79 #define FEAT_APPLICATION_MARKER_START(regionTag) ((void)0)
80 #define FEAT_APPLICATION_MARKER_STOP(regionTag) ((void)0)
81 #define FEAT_APPLICATION_MARKER_GET(regionTag, nevents, events, time, count) ((void)0)
82#endif //FEAT_APPLICATION_MARKER_ACTIVATED
83
84#ifdef FEAT_SPECIAL_MARKER_ACTIVATED
85 #define FEAT_SPECIAL_MARKER_REGISTER(regionTag) LIKWID_MARKER_REGISTER(regionTag)
86 #define FEAT_SPECIAL_MARKER_START(regionTag) LIKWID_MARKER_START(regionTag)
87 #define FEAT_SPECIAL_MARKER_STOP(regionTag) LIKWID_MARKER_STOP(regionTag)
88 #define FEAT_SPECIAL_MARKER_GET(regionTag, nevents, events, time, count) LIKWID_MARKER_GET(regionTag, nevents, events, time, count)
89#else
90 #define FEAT_SPECIAL_MARKER_REGISTER(regionTag) ((void)0)
91 #define FEAT_SPECIAL_MARKER_START(regionTag) ((void)0)
92 #define FEAT_SPECIAL_MARKER_STOP(regionTag) ((void)0)
93 #define FEAT_SPECIAL_MARKER_GET(regionTag, nevents, events, time, count) ((void)0)
94#endif //FEAT_KERNEL_MARKER_ACTIVATED
95
96// FEAT CUDA marker
97
98//these are simple aliases which should only be called once per programm, i.e. in FEAT runtime guard
100#define FEAT_NVMARKER_INIT LIKWID_NVMARKER_INIT
102#define FEAT_NVMARKER_THREADINIT LIKWID_NVMARKER_THREADINIT
104#define FEAT_NVMARKER_SWITCH LIKWID_NVMARKER_SWITCH
106#define FEAT_NVMARKER_CLOSE LIKWID_NVMARKER_CLOSE
107
108#define FEAT_NVMARKER_REGISTER(regionTag) LIKWID_NVMARKER_REGISTER(regionTag)
109#define FEAT_NVMARKER_START(regionTag) LIKWID_NVMARKER_START(regionTag)
110#define FEAT_NVMARKER_STOP(regionTag) LIKWID_NVMARKER_STOP(regionTag)
111#define FEAT_NVMARKER_RESET(regionTag) LIKWID_NVMARKER_RESET(regionTag)
112#define FEAT_NVMARKER_GET(name, ngpu, nevents, eventlist, time, count) LIKWID_NVMARKER_GET(name, ngpu, nevents, eventlist, time, count)