2.0.4 (revision 1809)
OpenMP Pragma And Region Instrumentor
pomp2_region_info.h
Go to the documentation of this file.
1 /*
2  * This file is part of the Score-P software (http://www.score-p.org)
3  *
4  * Copyright (c) 2009-2011,
5  * RWTH Aachen University, Germany
6  *
7  * Copyright (c) 2009-2011,
8  * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany
9  *
10  * Copyright (c) 2009-2011,
11  * Technische Universitaet Dresden, Germany
12  *
13  * Copyright (c) 2009-2011,
14  * University of Oregon, Eugene, USA
15  *
16  * Copyright (c) 2009-2011, 2013, 2014
17  * Forschungszentrum Juelich GmbH, Germany
18  *
19  * Copyright (c) 2009-2011,
20  * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany
21  *
22  * Copyright (c) 2009-2011,
23  * Technische Universitaet Muenchen, Germany
24  *
25  * This software may be modified and distributed under the terms of
26  * a BSD-style license. See the COPYING file in the package base
27  * directory for details.
28  *
29  */
30 /****************************************************************************
31 ** SCALASCA http://www.scalasca.org/ **
32 ** KOJAK http://www.fz-juelich.de/jsc/kojak/ **
33 *****************************************************************************
34 ** Copyright (c) 1998-2009 **
35 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
36 ** **
37 ** See the file COPYRIGHT in the package base directory for details **
38 ****************************************************************************/
39 #ifndef POMP2_REGION_INFO_H
40 #define POMP2_REGION_INFO_H
41 
53 #include "opari2_region_info.h"
54 
55 #include <stdbool.h>
56 
61 typedef enum /* POMP2_Region_type */
62 {
63  POMP2_No_type = 0,
64  POMP2_Atomic,
65  POMP2_Barrier,
66  POMP2_Critical,
67  POMP2_Do,
68  POMP2_Flush,
69  POMP2_For,
70  POMP2_Master,
71  POMP2_Ordered,
72  POMP2_Parallel,
73  POMP2_Parallel_do,
74  POMP2_Parallel_for,
75  POMP2_Parallel_sections,
76  POMP2_Parallel_workshare,
77  POMP2_Sections,
78  POMP2_Single,
79  POMP2_Task,
80  POMP2_Taskuntied,
81  POMP2_Taskwait,
82  POMP2_Workshare
84 
88 const char*
90 
95 typedef enum
96 {
97  POMP2_No_schedule = 0,
98  POMP2_Static, /* needs chunk size */
99  POMP2_Dynamic, /* needs chunk size */
100  POMP2_Guided, /* needs chunk size */
101  POMP2_Runtime,
102  POMP2_Auto
104 
108 const char*
110 
115 typedef enum
116 {
117  POMP2_No_defaultSharing = 0,
118  POMP2_None,
119  POMP2_Shared,
120  POMP2_Private,
121  POMP2_Firstprivate
123 
127 const char*
129 
136 typedef struct
137 {
144  OPARI2_REGION_INFO
146 
156  bool mHasIf;
183  unsigned mNumSections;
188 
191 #define CTC_OMP_TOKENS \
192  CTC_OMP_Has_copy_in, \
193  CTC_OMP_Has_copy_private, \
194  CTC_OMP_Has_defaultSharing, \
195  CTC_OMP_Has_first_private, \
196  CTC_OMP_Has_last_private, \
197  CTC_OMP_Has_no_wait, \
198  CTC_OMP_Has_ordered, \
199  CTC_OMP_Has_reduction, \
200  CTC_OMP_Has_schedule, \
201  CTC_OMP_Has_shared, \
202  CTC_OMP_Num_sections, \
203  CTC_OMP_Critical_name, \
204  CTC_OMP_User_group_name, \
205  CTC_OMP_Has_if, \
206  CTC_OMP_Has_collapse, \
207  CTC_OMP_Has_num_threads, \
208  CTC_OMP_Has_untied
209 
210 #define CTC_OPENMP_TOKEN_MAP_ENTRIES \
211  { "criticalName", CTC_OMP_Critical_name }, \
212  { "hasCollapse", CTC_OMP_Has_collapse }, \
213  { "hasCopyIn", CTC_OMP_Has_copy_in }, \
214  { "hasCopyPrivate", CTC_OMP_Has_copy_private }, \
215  { "hasDefault", CTC_OMP_Has_defaultSharing }, \
216  { "hasFirstPrivate", CTC_OMP_Has_first_private }, \
217  { "hasIf", CTC_OMP_Has_if }, \
218  { "hasLastPrivate", CTC_OMP_Has_last_private }, \
219  { "hasNowait", CTC_OMP_Has_no_wait }, \
220  { "hasNum_threads", CTC_OMP_Has_num_threads }, \
221  { "hasOrdered", CTC_OMP_Has_ordered }, \
222  { "hasReduction", CTC_OMP_Has_reduction }, \
223  { "hasSchedule", CTC_OMP_Has_schedule }, \
224  { "hasShared", CTC_OMP_Has_shared }, \
225  { "hasUntied", CTC_OMP_Has_untied }, \
226  { "numSections", CTC_OMP_Num_sections }, \
227  { "userGroupName", CTC_OMP_User_group_name }
228 
265 void
266 ctcString2RegionInfo( const char ctcString[],
267  POMP2_Region_info* regionInfo );
268 
273 void
275 
276 
277 #endif /* POMP2_REGION_INFO_H */
POMP2_Schedule_type
Definition: pomp2_region_info.h:95
bool mHasLastPrivate
Definition: pomp2_region_info.h:160
unsigned mNumSections
Definition: pomp2_region_info.h:183
bool mHasNumThreads
Definition: pomp2_region_info.h:164
bool mHasUntied
Definition: pomp2_region_info.h:175
const char * pomp2ScheduleType2String(POMP2_Schedule_type scheduleType)
bool mHasCopyIn
Definition: pomp2_region_info.h:152
void freePOMP2RegionInfoMembers(POMP2_Region_info *regionInfo)
bool mHasIf
Definition: pomp2_region_info.h:156
POMP2_Schedule_type mScheduleType
Definition: pomp2_region_info.h:177
POMP2_DefaultSharing_type
Definition: pomp2_region_info.h:115
POMP2_DefaultSharing_type mDefaultSharingType
Definition: pomp2_region_info.h:179
const char * pomp2RegionType2String(POMP2_Region_type regionType)
bool mHasOrdered
Definition: pomp2_region_info.h:166
const char * pomp2defaultSharingType2String(POMP2_DefaultSharing_type defaultSharingType)
bool mHasCopyPrivate
Definition: pomp2_region_info.h:154
bool mHasShared
Definition: pomp2_region_info.h:170
bool mHasReduction
Definition: pomp2_region_info.h:168
POMP2_Region_type
Definition: pomp2_region_info.h:61
bool mHasCollapse
Definition: pomp2_region_info.h:172
char * mCriticalName
Definition: pomp2_region_info.h:185
bool mHasFirstPrivate
Definition: pomp2_region_info.h:158
void ctcString2RegionInfo(const char ctcString[], POMP2_Region_info *regionInfo)
char * mUserGroupName
Definition: pomp2_region_info.h:181
bool mHasNoWait
Definition: pomp2_region_info.h:162
This struct stores all information on an OpenMP region, like the region type or corresponding source ...
Definition: pomp2_region_info.h:136
POMP2_Region_type mRegionType
Definition: pomp2_region_info.h:150