2.2 (revision 4737)
OTF2_Callbacks.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-2012,
5  * RWTH Aachen University, Germany
6  *
7  * Copyright (c) 2009-2012,
8  * Gesellschaft fuer numerische Simulation mbH Braunschweig, Germany
9  *
10  * Copyright (c) 2009-2014,
11  * Technische Universitaet Dresden, Germany
12  *
13  * Copyright (c) 2009-2012,
14  * University of Oregon, Eugene, USA
15  *
16  * Copyright (c) 2009-2012,
17  * Forschungszentrum Juelich GmbH, Germany
18  *
19  * Copyright (c) 2009-2012,
20  * German Research School for Simulation Sciences GmbH, Juelich/Aachen, Germany
21  *
22  * Copyright (c) 2009-2012,
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 
32 #ifndef OTF2_CALLBACKS_H
33 #define OTF2_CALLBACKS_H
34 
35 
43 #ifndef __cplusplus
44 #include <stdbool.h>
45 #endif
46 
47 
48 #include <otf2/OTF2_ErrorCodes.h>
49 
50 
52 
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif /* __cplusplus */
57 
58 
109 typedef OTF2_FlushType
110 ( * OTF2_PreFlushCallback )( void* userData,
111  OTF2_FileType fileType,
112  OTF2_LocationRef location,
113  void* callerData,
114  bool final );
115 
116 
132 typedef OTF2_TimeStamp
133 ( * OTF2_PostFlushCallback )( void* userData,
134  OTF2_FileType fileType,
135  OTF2_LocationRef location );
136 
137 
145 typedef struct OTF2_FlushCallbacks
146 {
152 
153 
196 typedef void*
197 ( * OTF2_MemoryAllocate )( void* userData,
198  OTF2_FileType fileType,
199  OTF2_LocationRef location,
200  void** perBufferData,
201  uint64_t chunkSize );
202 
203 
227 typedef void
228 ( * OTF2_MemoryFreeAll )( void* userData,
229  OTF2_FileType fileType,
230  OTF2_LocationRef location,
231  void** perBufferData,
232  bool final );
233 
234 
239 typedef struct OTF2_MemoryCallbacks
240 {
246 
247 
304 
308 #define OTF2_COLLECTIVES_ROOT 0
309 
310 
318 typedef OTF2_CallbackCode
319 ( * OTF2_Collectives_GetSize )( void* userData,
320  OTF2_CollectiveContext* commContext,
321  uint32_t* size );
322 
323 
332 typedef OTF2_CallbackCode
333 ( * OTF2_Collectives_GetRank )( void* userData,
334  OTF2_CollectiveContext* commContext,
335  uint32_t* rank );
336 
337 
348 typedef OTF2_CallbackCode
349 ( * OTF2_Collectives_CreateLocalComm )( void* userData,
350  OTF2_CollectiveContext** localCommContext,
351  OTF2_CollectiveContext* globalCommContext,
352  uint32_t globalRank,
353  uint32_t globalSize,
354  uint32_t localRank,
355  uint32_t localSize,
356  uint32_t fileNumber,
357  uint32_t numberOfFiles );
358 
359 
367 typedef OTF2_CallbackCode
368 ( * OTF2_Collectives_FreeLocalComm )( void* userData,
369  OTF2_CollectiveContext* localCommContext );
370 
371 
378 typedef OTF2_CallbackCode
379 ( * OTF2_Collectives_Barrier )( void* userData,
380  OTF2_CollectiveContext* commContext );
381 
382 
389 typedef OTF2_CallbackCode
390 ( * OTF2_Collectives_Bcast )( void* userData,
391  OTF2_CollectiveContext* commContext,
392  void* data,
393  uint32_t numberElements,
394  OTF2_Type type,
395  uint32_t root );
396 
397 
406 typedef OTF2_CallbackCode
407 ( * OTF2_Collectives_Gather )( void* userData,
408  OTF2_CollectiveContext* commContext,
409  const void* inData,
410  void* outData,
411  uint32_t numberElements,
412  OTF2_Type type,
413  uint32_t root );
414 
415 
424 typedef OTF2_CallbackCode
425 ( * OTF2_Collectives_Gatherv )( void* userData,
426  OTF2_CollectiveContext* commContext,
427  const void* inData,
428  uint32_t inElements,
429  void* outData,
430  const uint32_t* outElements,
431  OTF2_Type type,
432  uint32_t root );
433 
434 
443 typedef OTF2_CallbackCode
444 ( * OTF2_Collectives_Scatter )( void* userData,
445  OTF2_CollectiveContext* commContext,
446  const void* inData,
447  void* outData,
448  uint32_t numberElements,
449  OTF2_Type type,
450  uint32_t root );
451 
452 
461 typedef OTF2_CallbackCode
462 ( * OTF2_Collectives_Scatterv )( void* userData,
463  OTF2_CollectiveContext* commContext,
464  const void* inData,
465  const uint32_t* inElements,
466  void* outData,
467  uint32_t outElements,
468  OTF2_Type type,
469  uint32_t root );
470 
471 
480 typedef void
481 ( * OTF2_Collectives_Release )( void* userData,
482  OTF2_CollectiveContext* globalCommContext,
483  OTF2_CollectiveContext* localCommContext );
484 
485 
491 {
492  OTF2_Collectives_Release otf2_release;
493  OTF2_Collectives_GetSize otf2_get_size;
494  OTF2_Collectives_GetRank otf2_get_rank;
495  OTF2_Collectives_CreateLocalComm otf2_create_local_comm;
496  OTF2_Collectives_FreeLocalComm otf2_free_local_comm;
497  OTF2_Collectives_Barrier otf2_barrier;
498  OTF2_Collectives_Bcast otf2_bcast;
499  OTF2_Collectives_Gather otf2_gather;
500  OTF2_Collectives_Gatherv otf2_gatherv;
501  OTF2_Collectives_Scatter otf2_scatter;
502  OTF2_Collectives_Scatterv otf2_scatterv;
504 
505 
545 typedef struct OTF2_LockObject* OTF2_Lock;
546 
547 
559 typedef OTF2_CallbackCode
560 ( * OTF2_Locking_Create )( void* userData,
561  OTF2_Lock* lock );
562 
563 
575 typedef OTF2_CallbackCode
576 ( * OTF2_Locking_Destroy )( void* userData,
577  OTF2_Lock lock );
578 
579 
591 typedef OTF2_CallbackCode
592 ( * OTF2_Locking_Lock )( void* userData,
593  OTF2_Lock lock );
594 
595 
607 typedef OTF2_CallbackCode
608 ( * OTF2_Locking_Unlock )( void* userData,
609  OTF2_Lock lock );
610 
611 
628 typedef void
629 ( * OTF2_Locking_Release )( void* userData );
630 
631 
636 typedef struct OTF2_LockingCallbacks
637 {
638  OTF2_Locking_Release otf2_release;
639  OTF2_Locking_Create otf2_create;
640  OTF2_Locking_Destroy otf2_destroy;
641  OTF2_Locking_Lock otf2_lock;
642  OTF2_Locking_Unlock otf2_unlock;
644 
645 
656 #ifdef __cplusplus
657 }
658 #endif /* __cplusplus */
659 
660 
661 #endif /* !OTF2_CALLBACKS_H */
uint64_t OTF2_LocationRef
Type used to indicate a reference to a Location definition.
Definition: OTF2_GeneralDefinitions.h:139
void(* OTF2_Collectives_Release)(void *userData, OTF2_CollectiveContext *globalCommContext, OTF2_CollectiveContext *localCommContext)
Optionally called in OTF2_Archive_Close or OTF2_Reader_Close respectively.
Definition: OTF2_Callbacks.h:481
uint8_t OTF2_Type
Wrapper for enum OTF2_Type_enum.
Definition: OTF2_GeneralDefinitions.h:561
uint8_t OTF2_FileType
Wrapper for enum OTF2_FileType_enum.
Definition: OTF2_GeneralDefinitions.h:427
OTF2_CallbackCode(* OTF2_Collectives_GetRank)(void *userData, OTF2_CollectiveContext *commContext, uint32_t *rank)
Returns the rank of this OTF2_Archive objects in this communication context. A number between 0 and o...
Definition: OTF2_Callbacks.h:333
OTF2_PostFlushCallback otf2_post_flush
Callback which is called after a flush.
Definition: OTF2_Callbacks.h:150
OTF2_CallbackCode(* OTF2_Collectives_Gatherv)(void *userData, OTF2_CollectiveContext *commContext, const void *inData, uint32_t inElements, void *outData, const uint32_t *outElements, OTF2_Type type, uint32_t root)
Performs a gather collective on the given communication context where each ranks contribute different...
Definition: OTF2_Callbacks.h:425
OTF2_CallbackCode(* OTF2_Collectives_Barrier)(void *userData, OTF2_CollectiveContext *commContext)
Performs a barrier collective on the given communication context.
Definition: OTF2_Callbacks.h:379
Struct which holds all collective callbacks.
Definition: OTF2_Callbacks.h:490
OTF2_CallbackCode(* OTF2_Collectives_FreeLocalComm)(void *userData, OTF2_CollectiveContext *localCommContext)
Destroys the communication context previous created by the OTF2_Collectives_CreateLocalComm callback...
Definition: OTF2_Callbacks.h:368
Structure holding the flush callbacks.
Definition: OTF2_Callbacks.h:145
This header file provides general definitions which should be accessible in all internal and external...
OTF2_CallbackCode(* OTF2_Locking_Destroy)(void *userData, OTF2_Lock lock)
Destroys a locking object.
Definition: OTF2_Callbacks.h:576
uint64_t OTF2_TimeStamp
OTF2 time stamp.
Definition: OTF2_GeneralDefinitions.h:103
OTF2_CallbackCode(* OTF2_Collectives_CreateLocalComm)(void *userData, OTF2_CollectiveContext **localCommContext, OTF2_CollectiveContext *globalCommContext, uint32_t globalRank, uint32_t globalSize, uint32_t localRank, uint32_t localSize, uint32_t fileNumber, uint32_t numberOfFiles)
Create a new disjoint partitioning of the the globalCommContext communication context. numberOfFiles denotes the number of the partitions. fileNumber denotes in which of the partitions this OTF2_Archive should belong. localSize is the size of this partition and localRank the rank of this OTF2_Archive in the partition.
Definition: OTF2_Callbacks.h:349
uint8_t OTF2_FlushType
Defines whether the recorded data is flushed to a file or not. Please see OTF2_FlushType_enum for a d...
Definition: OTF2_GeneralDefinitions.h:367
void *(* OTF2_MemoryAllocate)(void *userData, OTF2_FileType fileType, OTF2_LocationRef location, void **perBufferData, uint64_t chunkSize)
Function pointer for allocating memory for chunks.
Definition: OTF2_Callbacks.h:197
void(* OTF2_MemoryFreeAll)(void *userData, OTF2_FileType fileType, OTF2_LocationRef location, void **perBufferData, bool final)
Function pointer to release all allocated chunks.
Definition: OTF2_Callbacks.h:228
OTF2_CallbackCode
Return value to indicate that the record reading should be interrupted.
Definition: OTF2_GeneralDefinitions.h:344
struct OTF2_LockObject * OTF2_Lock
Opaque type for a locking object.
Definition: OTF2_Callbacks.h:545
OTF2_CallbackCode(* OTF2_Collectives_Bcast)(void *userData, OTF2_CollectiveContext *commContext, void *data, uint32_t numberElements, OTF2_Type type, uint32_t root)
Performs a broadcast collective on the given communication context.
Definition: OTF2_Callbacks.h:390
OTF2_CallbackCode(* OTF2_Collectives_GetSize)(void *userData, OTF2_CollectiveContext *commContext, uint32_t *size)
Returns the number of OTF2_Archive objects operating in this communication context.
Definition: OTF2_Callbacks.h:319
Struct which holds all locking callbacks.
Definition: OTF2_Callbacks.h:636
OTF2_MemoryFreeAll otf2_free_all
Callback which is called to release all previous allocated chunks.
Definition: OTF2_Callbacks.h:244
OTF2_PreFlushCallback otf2_pre_flush
Callback which is called prior a flush.
Definition: OTF2_Callbacks.h:148
OTF2_CallbackCode(* OTF2_Locking_Unlock)(void *userData, OTF2_Lock lock)
Unlocks a locking object.
Definition: OTF2_Callbacks.h:608
OTF2_CallbackCode(* OTF2_Collectives_Scatterv)(void *userData, OTF2_CollectiveContext *commContext, const void *inData, const uint32_t *inElements, void *outData, uint32_t outElements, OTF2_Type type, uint32_t root)
Performs a scatter collective on the given communication context where each ranks contribute differen...
Definition: OTF2_Callbacks.h:462
OTF2_MemoryAllocate otf2_allocate
Callback which is called to allocate a new chunk.
Definition: OTF2_Callbacks.h:242
OTF2_CallbackCode(* OTF2_Collectives_Gather)(void *userData, OTF2_CollectiveContext *commContext, const void *inData, void *outData, uint32_t numberElements, OTF2_Type type, uint32_t root)
Performs a gather collective on the given communication context where each ranks contribute the same ...
Definition: OTF2_Callbacks.h:407
Structure holding the memory callbacks.
Definition: OTF2_Callbacks.h:239
struct OTF2_CollectiveContext OTF2_CollectiveContext
User provided type for collective groups.
Definition: OTF2_Callbacks.h:303
OTF2_CallbackCode(* OTF2_Locking_Lock)(void *userData, OTF2_Lock lock)
Locks a locking object.
Definition: OTF2_Callbacks.h:592
void(* OTF2_Locking_Release)(void *userData)
Signals the end of life of the OTF2_Archive or OTF2_Reader object to the locking callbacks.
Definition: OTF2_Callbacks.h:629
OTF2_CallbackCode(* OTF2_Locking_Create)(void *userData, OTF2_Lock *lock)
Creates a new locking object.
Definition: OTF2_Callbacks.h:560
Error codes and error handling.
OTF2_TimeStamp(* OTF2_PostFlushCallback)(void *userData, OTF2_FileType fileType, OTF2_LocationRef location)
Definition for the post flush callback.
Definition: OTF2_Callbacks.h:133
OTF2_FlushType(* OTF2_PreFlushCallback)(void *userData, OTF2_FileType fileType, OTF2_LocationRef location, void *callerData, bool final)
Definition for the pre flush callback.
Definition: OTF2_Callbacks.h:110
OTF2_CallbackCode(* OTF2_Collectives_Scatter)(void *userData, OTF2_CollectiveContext *commContext, const void *inData, void *outData, uint32_t numberElements, OTF2_Type type, uint32_t root)
Performs a scatter collective on the given communication context where each ranks contribute the same...
Definition: OTF2_Callbacks.h:444