5.0-trunk (revision 14705)
SCOREP_PublicTypes.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, 2018,
11  * Technische Universitaet Dresden, Germany
12  *
13  * Copyright (c) 2009-2011,
14  * University of Oregon, Eugene, USA
15  *
16  * Copyright (c) 2009-2011, 2018,
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 
38 #ifndef SCOREP_PUBLICTYPES_H
39 #define SCOREP_PUBLICTYPES_H
40 
41 #include <stdint.h>
42 
46 
51 typedef int64_t SCOREP_ExitStatus;
52 
53 
58 #define SCOREP_INVALID_EXIT_STATUS ( ( int64_t )( ~( ( ~( ( uint64_t )0u ) ) >> 1 ) ) )
59 
60 
65 typedef uint32_t SCOREP_LineNo;
66 
67 
68 
73 #define SCOREP_INVALID_LINE_NO 0
74 
81 
87 #define SCOREP_MOVABLE_NULL 0
88 
93 
99 
104 #define SCOREP_INVALID_SOURCE_FILE SCOREP_MOVABLE_NULL
105 
111 
116 #define SCOREP_INVALID_METRIC SCOREP_MOVABLE_NULL
117 
118 
124 
128 #define SCOREP_INVALID_SAMPLING_SET SCOREP_MOVABLE_NULL
129 
130 
136 
140 #define SCOREP_INVALID_REGION SCOREP_MOVABLE_NULL
141 
142 
148 
152 #define SCOREP_INVALID_PARADIGM SCOREP_MOVABLE_NULL
153 
154 
155 
159 typedef struct SCOREP_Task* SCOREP_TaskHandle;
160 
166 {
191 
192 
193 
198 #define SCOREP_LOCATION_TYPES \
199  SCOREP_LOCATION_TYPE( CPU_THREAD, "CPU thread" ) \
200  SCOREP_LOCATION_TYPE( GPU, "GPU" ) \
201  SCOREP_LOCATION_TYPE( METRIC, "metric location" ) \
202 
203 
205 {
206  #define SCOREP_LOCATION_TYPE( NAME, name_string ) SCOREP_LOCATION_TYPE_ ## NAME,
208  #undef SCOREP_LOCATION_TYPE
209 
210  SCOREP_NUMBER_OF_LOCATION_TYPES,
213 
217 typedef enum SCOREP_LockType
218 {
226 
229 
233 typedef int SCOREP_MpiRank;
234 
235 
239 typedef uint64_t SCOREP_MpiRequestId;
240 
241 
246 #define SCOREP_INVALID_ROOT_RANK -1
247 
248 
266 #define SCOREP_PARADIGM_CLASSES \
267  SCOREP_PARADIGM_CLASS( MPP, "multi-process", PROCESS ) \
268  SCOREP_PARADIGM_CLASS( THREAD_FORK_JOIN, "fork/join", THREAD_FORK_JOIN ) \
269  SCOREP_PARADIGM_CLASS( THREAD_CREATE_WAIT, "create/wait", THREAD_CREATE_WAIT ) \
270  SCOREP_PARADIGM_CLASS( ACCELERATOR, "accelerator", ACCELERATOR )
271 
272 
274 {
275 #define SCOREP_PARADIGM_CLASS( NAME, name, OTF2_NAME ) \
276  SCOREP_PARADIGM_CLASS_ ## NAME,
277  SCOREP_PARADIGM_CLASSES
278 
279 #undef SCOREP_PARADIGM_CLASS
280 
283 
284 
308 #define SCOREP_PARADIGMS \
309  SCOREP_PARADIGM( MEASUREMENT, "measurement", MEASUREMENT_SYSTEM ) \
310  SCOREP_PARADIGM( USER, "user", USER ) \
311  SCOREP_PARADIGM( COMPILER, "compiler", COMPILER ) \
312  SCOREP_PARADIGM( SAMPLING, "sampling", SAMPLING ) \
313  SCOREP_PARADIGM( MEMORY, "memory", NONE ) \
314  SCOREP_PARADIGM( LIBWRAP, "libwrap", NONE ) \
315  SCOREP_PARADIGM( MPI, "mpi", MPI ) \
316  SCOREP_PARADIGM( SHMEM, "shmem", SHMEM ) \
317  SCOREP_PARADIGM( OPENMP, "openmp", OPENMP ) \
318  SCOREP_PARADIGM( PTHREAD, "pthread", PTHREAD ) \
319  SCOREP_PARADIGM( ORPHAN_THREAD, "orphan thread", UNKNOWN ) \
320  SCOREP_PARADIGM( CUDA, "cuda", CUDA ) \
321  SCOREP_PARADIGM( OPENCL, "opencl", OPENCL ) \
322  SCOREP_PARADIGM( OPENACC, "openacc", OPENACC )
323 
324 
326 {
327 #define SCOREP_PARADIGM( NAME, name_str, OTF2_NAME ) \
328  SCOREP_PARADIGM_ ## NAME,
329  SCOREP_PARADIGMS
330 
331 #undef SCOREP_PARADIGM
332 
335 
343 {
350 
351 
409 #define SCOREP_REGION_TYPES \
410  SCOREP_REGION_TYPE( COLL_ONE2ALL, "one2all" ) \
411  SCOREP_REGION_TYPE( COLL_ALL2ONE, "all2one" ) \
412  SCOREP_REGION_TYPE( COLL_ALL2ALL, "all2all" ) \
413  SCOREP_REGION_TYPE( COLL_OTHER, "other collective" ) \
414  SCOREP_REGION_TYPE( POINT2POINT, "point2point" ) \
415  SCOREP_REGION_TYPE( PARALLEL, "parallel" ) \
416  SCOREP_REGION_TYPE( SECTIONS, "sections" ) \
417  SCOREP_REGION_TYPE( SECTION, "section" ) \
418  SCOREP_REGION_TYPE( WORKSHARE, "workshare" ) \
419  SCOREP_REGION_TYPE( SINGLE, "single" ) \
420  SCOREP_REGION_TYPE( MASTER, "master" ) \
421  SCOREP_REGION_TYPE( CRITICAL, "critical" ) \
422  SCOREP_REGION_TYPE( ATOMIC, "atomic" ) \
423  SCOREP_REGION_TYPE( BARRIER, "barrier" ) \
424  SCOREP_REGION_TYPE( IMPLICIT_BARRIER, "implicit barrier" ) \
425  SCOREP_REGION_TYPE( FLUSH, "flush" ) \
426  SCOREP_REGION_TYPE( CRITICAL_SBLOCK, "critical sblock" ) \
427  SCOREP_REGION_TYPE( SINGLE_SBLOCK, "single sblock" ) \
428  SCOREP_REGION_TYPE( WRAPPER, "wrapper" ) \
429  SCOREP_REGION_TYPE( TASK, "task" ) \
430  SCOREP_REGION_TYPE( TASK_UNTIED, "untied task" ) \
431  SCOREP_REGION_TYPE( TASK_WAIT, "taskwait" ) \
432  SCOREP_REGION_TYPE( TASK_CREATE, "task create" ) \
433  SCOREP_REGION_TYPE( ORDERED, "ordered" ) \
434  SCOREP_REGION_TYPE( ORDERED_SBLOCK, "ordered sblock" ) \
435  SCOREP_REGION_TYPE( ARTIFICIAL, "artificial" ) \
436  SCOREP_REGION_TYPE( RMA, "rma" ) \
437  SCOREP_REGION_TYPE( THREAD_CREATE, "thread create" ) \
438  SCOREP_REGION_TYPE( THREAD_WAIT, "thread wait" ) \
439  SCOREP_REGION_TYPE( ALLOCATE, "allocate" ) \
440  SCOREP_REGION_TYPE( DEALLOCATE, "deallocate" ) \
441  SCOREP_REGION_TYPE( REALLOCATE, "reallocate" )
442 
443 
444 #define SCOREP_REGION_TYPE( NAME, name_str ) \
445  SCOREP_REGION_ ## NAME,
446 
447 typedef enum SCOREP_RegionType
448 {
449  SCOREP_REGION_UNKNOWN = 0,
450  SCOREP_REGION_FUNCTION,
451  SCOREP_REGION_LOOP,
452  SCOREP_REGION_USER,
453  SCOREP_REGION_CODE,
454 
455  SCOREP_REGION_PHASE,
456  SCOREP_REGION_DYNAMIC,
457  SCOREP_REGION_DYNAMIC_PHASE,
458  SCOREP_REGION_DYNAMIC_LOOP,
459  SCOREP_REGION_DYNAMIC_FUNCTION,
460  SCOREP_REGION_DYNAMIC_LOOP_PHASE,
461 
462  SCOREP_REGION_TASKLOOP, /* move to SCOREP_REGION_TYPES once OTF2_REGION_ROLE_TASKLOOP exists */
463 
464  SCOREP_REGION_TYPES
465 
468 
469 #undef SCOREP_REGION_TYPE
470 
471 
472 
484 #define SCOREP_RMA_SYNC_TYPES \
485  SCOREP_RMA_SYNC_TYPE( MEMORY, memory, "memory" ) \
486  SCOREP_RMA_SYNC_TYPE( NOTIFY_IN, notify_in, "notify in" ) \
487  SCOREP_RMA_SYNC_TYPE( NOTIFY_OUT, notify_out, "notify out" )
488 
489 typedef enum SCOREP_RmaSyncType
490 {
491 #define SCOREP_RMA_SYNC_TYPE( upper, lower, name ) SCOREP_RMA_SYNC_TYPE_ ## upper,
492  SCOREP_RMA_SYNC_TYPES
493  #undef SCOREP_RMA_SYNC_TYPE
494 
497 
498 
499 
511 #define SCOREP_RMA_SYNC_LEVELS \
512  SCOREP_RMA_SYNC_LEVEL( NONE, none, "none", 0 ) \
513  SCOREP_RMA_SYNC_LEVEL( PROCESS, process, "process", 1 << 0 ) \
514  SCOREP_RMA_SYNC_LEVEL( MEMORY, memory, "memory", 1 << 1 )
515 
517 {
518 #define SCOREP_RMA_SYNC_LEVEL( upper, lower, name, value ) \
519  SCOREP_RMA_SYNC_LEVEL_ ## upper = value,
520 
521  SCOREP_RMA_SYNC_LEVELS
522 #undef SCOREP_RMA_SYNC_LEVEL
524 
525 
543 #define SCOREP_RMA_ATOMIC_TYPES \
544  SCOREP_RMA_ATOMIC_TYPE( ACCUMULATE, accumulate, "accumulate" ) \
545  SCOREP_RMA_ATOMIC_TYPE( INCREMENT, increment, "increment" ) \
546  SCOREP_RMA_ATOMIC_TYPE( TEST_AND_SET, test_and_set, "test and set" ) \
547  SCOREP_RMA_ATOMIC_TYPE( COMPARE_AND_SWAP, compare_and_swap, "compare and swap" ) \
548  SCOREP_RMA_ATOMIC_TYPE( SWAP, swap, "swap" ) \
549  SCOREP_RMA_ATOMIC_TYPE( FETCH_AND_ADD, fetch_and_add, "fetch and add" ) \
550  SCOREP_RMA_ATOMIC_TYPE( FETCH_AND_INCREMENT, fetch_and_increment, "fetch and increment" ) \
551  SCOREP_RMA_ATOMIC_TYPE( ADD, add, "add" )
552 
554 {
555 #define SCOREP_RMA_ATOMIC_TYPE( upper, lower, name ) SCOREP_RMA_ATOMIC_TYPE_ ## upper,
556  SCOREP_RMA_ATOMIC_TYPES
557  #undef SCOREP_RMA_ATOMIC_TYPE
558 
559  SCOREP_INVALID_RMA_ATOMIC_TYPE
561 
562 
568 {
573 
579 typedef enum SCOREP_MetricScope
580 {
589 
592 
599 {
608 
611 
612 
630 #define SCOREP_IPC_DATATYPES \
631  SCOREP_IPC_DATATYPE( BYTE ) \
632  SCOREP_IPC_DATATYPE( CHAR ) \
633  SCOREP_IPC_DATATYPE( UNSIGNED_CHAR ) \
634  SCOREP_IPC_DATATYPE( INT ) \
635  SCOREP_IPC_DATATYPE( UNSIGNED ) \
636  SCOREP_IPC_DATATYPE( INT32_T ) \
637  SCOREP_IPC_DATATYPE( UINT32_T ) \
638  SCOREP_IPC_DATATYPE( INT64_T ) \
639  SCOREP_IPC_DATATYPE( UINT64_T ) \
640  SCOREP_IPC_DATATYPE( DOUBLE )
641 
643 {
644 #define SCOREP_IPC_DATATYPE( datatype ) \
645  SCOREP_IPC_ ## datatype,
646  SCOREP_IPC_DATATYPES
647 #undef SCOREP_IPC_DATATYPE
648  SCOREP_IPC_NUMBER_OF_DATATYPES
650 
663 #define SCOREP_IPC_OPERATIONS \
664  SCOREP_IPC_OPERATION( BAND ) \
665  SCOREP_IPC_OPERATION( BOR ) \
666  SCOREP_IPC_OPERATION( MIN ) \
667  SCOREP_IPC_OPERATION( MAX ) \
668  SCOREP_IPC_OPERATION( SUM )
669 
671 {
672 #define SCOREP_IPC_OPERATION( op ) \
673  SCOREP_IPC_ ## op,
674  SCOREP_IPC_OPERATIONS
675 #undef SCOREP_IPC_OPERATION
676  SCOREP_IPC_NUMBER_OF_OPERATIONS
678 
679 
692 {
699 
702 #endif /* SCOREP_PUBLICTYPES_H */
Definition: SCOREP_PublicTypes.h:590
Definition: SCOREP_PublicTypes.h:609
SCOREP_AnyHandle SCOREP_SamplingSetHandle
Definition: SCOREP_PublicTypes.h:123
struct SCOREP_Task * SCOREP_TaskHandle
Definition: SCOREP_PublicTypes.h:159
#define SCOREP_LOCATION_TYPES
Definition: SCOREP_PublicTypes.h:198
Definition: SCOREP_PublicTypes.h:185
Definition: SCOREP_PublicTypes.h:601
Definition: SCOREP_PublicTypes.h:221
Definition: SCOREP_PublicTypes.h:168
Definition: SCOREP_PublicTypes.h:227
SCOREP_AnyHandle SCOREP_SourceFileHandle
Definition: SCOREP_PublicTypes.h:98
Definition: SCOREP_PublicTypes.h:171
SCOREP_AnyHandle SCOREP_MetricHandle
Definition: SCOREP_PublicTypes.h:110
SCOREP_CollectiveType
Types to specify the used collectives in calls to SCOREP_MpiCollectiveBegin and SCOREP_RmaCollectiveB...
Definition: SCOREP_PublicTypes.h:165
Definition: SCOREP_PublicTypes.h:694
Definition: SCOREP_PublicTypes.h:183
Definition: SCOREP_PublicTypes.h:607
Definition: SCOREP_PublicTypes.h:570
SCOREP_RmaSyncType
Type of direct RMA synchronization call.
Definition: SCOREP_PublicTypes.h:489
Definition: SCOREP_PublicTypes.h:182
SCOREP_Substrates_RequirementFlag
Definition: SCOREP_PublicTypes.h:691
int SCOREP_MpiRank
Definition: SCOREP_PublicTypes.h:233
SCOREP_RmaSyncLevel
specifies a RMA synchronization level, used by RMA records to be passed to SCOREP_Rma*() functions...
Definition: SCOREP_PublicTypes.h:516
SCOREP_AnyHandle SCOREP_ParadigmHandle
Definition: SCOREP_PublicTypes.h:147
Definition: SCOREP_PublicTypes.h:348
SCOREP_ParadigmType
defines paradigms that are be monitored
Definition: SCOREP_PublicTypes.h:325
Definition: SCOREP_PublicTypes.h:188
Definition: SCOREP_PublicTypes.h:170
Definition: SCOREP_PublicTypes.h:184
SCOREP_LockType
Definition: SCOREP_PublicTypes.h:217
Definition: SCOREP_PublicTypes.h:179
Definition: SCOREP_PublicTypes.h:586
Definition: SCOREP_PublicTypes.h:176
Definition: SCOREP_PublicTypes.h:211
Definition: SCOREP_PublicTypes.h:281
Definition: SCOREP_PublicTypes.h:225
Definition: SCOREP_PublicTypes.h:571
Definition: SCOREP_PublicTypes.h:186
Definition: SCOREP_PublicTypes.h:178
Definition: SCOREP_PublicTypes.h:697
Definition: SCOREP_PublicTypes.h:345
Definition: SCOREP_PublicTypes.h:187
Definition: SCOREP_PublicTypes.h:466
uint32_t SCOREP_LineNo
Definition: SCOREP_PublicTypes.h:65
Definition: SCOREP_PublicTypes.h:173
SCOREP_SamplingSetClass
Class of locations which recorded a sampling set.
Definition: SCOREP_PublicTypes.h:567
Definition: SCOREP_PublicTypes.h:180
Definition: SCOREP_PublicTypes.h:174
SCOREP_Ipc_Operation
specifies an inter process communication operation for reduce function
Definition: SCOREP_PublicTypes.h:670
Definition: SCOREP_PublicTypes.h:346
SCOREP_Allocator_MovableMemory SCOREP_AnyHandle
Definition: SCOREP_PublicTypes.h:92
SCOREP_RmaAtomicType
specifies a RMA Atomic Operation Type.
Definition: SCOREP_PublicTypes.h:553
SCOREP_ParameterType
defines types to be used in defining a parameter for parameter based profiling (SCOREP_Definitions_Ne...
Definition: SCOREP_PublicTypes.h:342
Definition: SCOREP_PublicTypes.h:333
Definition: SCOREP_PublicTypes.h:181
Definition: SCOREP_PublicTypes.h:177
Definition: SCOREP_PublicTypes.h:582
Definition: SCOREP_PublicTypes.h:569
SCOREP_ParadigmClass
defines classes of paradigms that are monitored Types:
Definition: SCOREP_PublicTypes.h:273
Definition: SCOREP_PublicTypes.h:169
uint64_t SCOREP_MpiRequestId
Definition: SCOREP_PublicTypes.h:239
Definition: SCOREP_PublicTypes.h:604
SCOREP_Ipc_Datatype
specifies an inter process communication data types
Definition: SCOREP_PublicTypes.h:642
Definition: SCOREP_PublicTypes.h:189
uint32_t SCOREP_Allocator_MovableMemory
Definition: SCOREP_PublicTypes.h:80
int64_t SCOREP_ExitStatus
Definition: SCOREP_PublicTypes.h:51
Definition: SCOREP_PublicTypes.h:167
Definition: SCOREP_PublicTypes.h:344
SCOREP_AnyHandle SCOREP_RegionHandle
Definition: SCOREP_PublicTypes.h:135
Definition: SCOREP_PublicTypes.h:584
SCOREP_MetricScope
Types to be used in defining the scope of a scoped sampling set.
Definition: SCOREP_PublicTypes.h:579
Definition: SCOREP_PublicTypes.h:495
SCOREP_LocationType
Definition: SCOREP_PublicTypes.h:204
Definition: SCOREP_PublicTypes.h:172
SCOREP_MetricOccurrence
Types to be used in defining the occurrence of a sampling set.
Definition: SCOREP_PublicTypes.h:598
Definition: SCOREP_PublicTypes.h:175
Definition: SCOREP_PublicTypes.h:588
SCOREP_RegionType
specifies a Region
Definition: SCOREP_PublicTypes.h:447