OpenMPI  0.1.1
vt_otf_gen.h
1 /**
2  * VampirTrace
3  * http://www.tu-dresden.de/zih/vampirtrace
4  *
5  * Copyright (c) 2005-2012, ZIH, TU Dresden, Federal Republic of Germany
6  *
7  * Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
8  * Centre, Federal Republic of Germany
9  *
10  * See the file COPYING in the package base directory for details
11  **/
12 
13 #ifndef _VT_GEN_OTF_H
14 #define _VT_GEN_OTF_H
15 
16 #ifdef __cplusplus
17 # define EXTERN extern "C"
18 #else
19 # define EXTERN extern
20 #endif
21 
22 #include "vt_inttypes.h"
23 
24 #include <stdlib.h>
25 
26 /*
27  *-----------------------------------------------------------------------------
28  * Typedefs
29  *-----------------------------------------------------------------------------
30  */
31 
32 /* -- Trace buffer entries -- */
33 
34 
35 /* - Types - */
36 
37 typedef enum
38 {
39  VTBUF_ENTRY_TYPE__DefinitionComment,
40  VTBUF_ENTRY_TYPE__DefSclFile,
41  VTBUF_ENTRY_TYPE__DefScl,
42  VTBUF_ENTRY_TYPE__DefFileGroup,
43  VTBUF_ENTRY_TYPE__DefFile,
44  VTBUF_ENTRY_TYPE__DefFunctionGroup,
45  VTBUF_ENTRY_TYPE__DefFunction,
46  VTBUF_ENTRY_TYPE__DefCollectiveOperation,
47  VTBUF_ENTRY_TYPE__DefCounterGroup,
48  VTBUF_ENTRY_TYPE__DefCounter,
49  VTBUF_ENTRY_TYPE__DefProcessGroup,
50  VTBUF_ENTRY_TYPE__DefProcessGroupAttributes,
51  VTBUF_ENTRY_TYPE__DefMarker,
52  VTBUF_ENTRY_TYPE__DefKeyValue,
53  VTBUF_ENTRY_TYPE__KeyValue,
54  /* time-bound records */
55  VTBUF_ENTRY_TYPE__Enter,
56  VTBUF_ENTRY_TYPE__Leave,
57  VTBUF_ENTRY_TYPE__FileOperation,
58  VTBUF_ENTRY_TYPE__BeginFileOperation,
59  VTBUF_ENTRY_TYPE__EndFileOperation,
60  VTBUF_ENTRY_TYPE__Counter,
61  VTBUF_ENTRY_TYPE__Comment,
62  VTBUF_ENTRY_TYPE__Marker,
63  VTBUF_ENTRY_TYPE__SendMsg,
64  VTBUF_ENTRY_TYPE__RecvMsg,
65  VTBUF_ENTRY_TYPE__RMAPut,
66  VTBUF_ENTRY_TYPE__RMAPutRE,
67  VTBUF_ENTRY_TYPE__RMAGet,
68  VTBUF_ENTRY_TYPE__RMAEnd,
69  VTBUF_ENTRY_TYPE__CollectiveOperation,
70  VTBUF_ENTRY_TYPE__BeginCollectiveOperation,
71  VTBUF_ENTRY_TYPE__EndCollectiveOperation,
72  VTBUF_ENTRY_TYPE__FunctionSummary,
73  VTBUF_ENTRY_TYPE__MessageSummary,
74  VTBUF_ENTRY_TYPE__CollectiveOperationSummary,
75  VTBUF_ENTRY_TYPE__FileOperationSummary
76 } VTBuf_EntryTypes;
77 
78 
79 /* -- Data structures -- */
80 
81 
82 /* - Base - */
83 
84 typedef struct
85 {
86  VTBuf_EntryTypes type;
87  uint32_t length;
89 
90 /* - VTBUF_ENTRY_TYPE__DefinitionComment - */
91 
92 typedef struct
93 {
94  VTBuf_EntryTypes type;
95  uint32_t length;
96 
97  char comment[1];
99 
100 /* - VTBUF_ENTRY_TYPE__DefSclFile - */
101 
102 typedef struct
103 {
104  VTBuf_EntryTypes type;
105  uint32_t length;
106 
107  uint32_t fid;
108  char fname[1];
110 
111 /* - VTBUF_ENTRY_TYPE__DefScl - */
112 
113 typedef struct
114 {
115  VTBuf_EntryTypes type;
116  uint32_t length;
117 
118  uint32_t sid;
119  uint32_t fid;
120  uint32_t ln;
122 
123 /* - VTBUF_ENTRY_TYPE__DefFileGroup - */
124 
125 typedef struct
126 {
127  VTBuf_EntryTypes type;
128  uint32_t length;
129 
130  uint32_t gid;
131  char gname[1];
133 
134 /* - VTBUF_ENTRY_TYPE__DefFile - */
135 
136 typedef struct
137 {
138  VTBuf_EntryTypes type;
139  uint32_t length;
140 
141  uint32_t fid;
142  uint32_t gid;
143  char fname[1];
145 
146 /* - VTBUF_ENTRY_TYPE__DefFunctionGroup - */
147 
148 typedef struct
149 {
150  VTBuf_EntryTypes type;
151  uint32_t length;
152 
153  uint32_t rdid;
154  char rdesc[1];
156 
157 /* - VTBUF_ENTRY_TYPE__DefFunction - */
158 
159 typedef struct
160 {
161  VTBuf_EntryTypes type;
162  uint32_t length;
163 
164  uint32_t rid;
165  uint32_t rdid;
166  uint32_t sid;
167  char rname[1];
169 
170 /* - VTBUF_ENTRY_TYPE__DefCollectiveOperation - */
171 
172 typedef struct
173 {
174  VTBuf_EntryTypes type;
175  uint32_t length;
176 
177  uint32_t cid;
178  uint32_t ctype;
179  char cname[1];
181 
182 /* - VTBUF_ENTRY_TYPE__DefCounterGroup - */
183 
184 typedef struct
185 {
186  VTBuf_EntryTypes type;
187  uint32_t length;
188 
189  uint32_t gid;
190  char gname[1];
192 
193 /* - VTBUF_ENTRY_TYPE__DefCounter - */
194 
195 typedef struct
196 {
197  VTBuf_EntryTypes type;
198  uint32_t length;
199 
200  uint32_t cid;
201  uint32_t cprop;
202  uint32_t gid;
203  uint32_t pgid;
204  char cunit[128];
205  char cname[1];
207 
208 /* - VTBUF_ENTRY_TYPE__DefProcessGroup - */
209 
210 typedef struct
211 {
212  VTBuf_EntryTypes type;
213  uint32_t length;
214 
215  uint32_t gid;
216  char grpn[128];
217  uint32_t grpc;
218  uint32_t grpv[1];
220 
221 /* - VTBUF_ENTRY_TYPE__DefProcessGroupAttributes - */
222 
223 typedef struct
224 {
225  VTBuf_EntryTypes type;
226  uint32_t length;
227 
228  uint32_t gid;
229  uint32_t gattr;
231 
232 /* - VTBUF_ENTRY_TYPE__DefMarker - */
233 
234 typedef struct
235 {
236  VTBuf_EntryTypes type;
237  uint32_t length;
238 
239  uint32_t mid;
240  uint32_t mtype;
241  char mname[1];
243 
244 /* - VTBUF_ENTRY_TYPE__DefKeyValue - */
245 
246 typedef struct
247 {
248  VTBuf_EntryTypes type;
249  uint32_t length;
250 
251  uint32_t kid;
252  uint8_t vtype;
253  char kname[1];
255 
256 /* - VTBUF_ENTRY_TYPE__Enter / VTBUF_ENTRY_TYPE__Leave - */
257 
258 typedef struct
259 {
260  VTBuf_EntryTypes type;
261  uint32_t length;
262 
263  uint64_t time;
264  uint32_t rid;
265  uint32_t sid;
267 
268 /* - VTBUF_ENTRY_TYPE__FileOperation - */
269 
270 typedef struct
271 {
272  VTBuf_EntryTypes type;
273  uint32_t length;
274 
275  uint64_t time;
276  uint64_t etime;
277  uint32_t fid;
278  uint64_t hid;
279  uint32_t op;
280  uint32_t bytes;
281  uint32_t sid;
283 
284 /* - VTBUF_ENTRY_TYPE__BeginFileOperation - */
285 
286 typedef struct
287 {
288  VTBuf_EntryTypes type;
289  uint32_t length;
290 
291  uint64_t time;
292  uint64_t mid;
293  uint32_t sid;
295 
296 /* - VTBUF_ENTRY_TYPE__EndFileOperation - */
297 
298 typedef struct
299 {
300  VTBuf_EntryTypes type;
301  uint32_t length;
302 
303  uint64_t time;
304  uint32_t fid;
305  uint64_t mid;
306  uint64_t hid;
307  uint32_t op;
308  uint32_t bytes;
309  uint32_t sid;
311 
312 /* - VTBUF_ENTRY_TYPE__Counter - */
313 
314 typedef struct
315 {
316  VTBuf_EntryTypes type;
317  uint32_t length;
318 
319  uint64_t time;
320  uint32_t cid;
321  uint64_t cval;
323 
324 /* - VTBUF_ENTRY_TYPE__Comment - */
325 
326 typedef struct
327 {
328  VTBuf_EntryTypes type;
329  uint32_t length;
330 
331  uint64_t time;
332  char comment[1];
334 
335 /* - VTBUF_ENTRY_TYPE__Marker - */
336 
337 typedef struct
338 {
339  VTBuf_EntryTypes type;
340  uint32_t length;
341 
342  uint64_t time;
343  uint32_t mid;
344  char mtext[1];
346 
347 /* - VTBUF_ENTRY_TYPE__KeyValue - */
348 
349 typedef struct
350 {
351  VTBuf_EntryTypes type;
352  uint32_t length;
353 
354  uint32_t kid;
355  uint8_t vtype;
356 
357  union {
358  char c;
359  int32_t i32;
360  uint32_t u32;
361  int64_t i64;
362  uint64_t u64;
363  float f;
364  double d;
365  } kvalue;
366 
368 
369 /* - VTBUF_ENTRY_TYPE__SendMsg / VTBUF_ENTRY_TYPE__RecvMsg - */
370 
371 typedef struct
372 {
373  VTBuf_EntryTypes type;
374  uint32_t length;
375 
376  uint64_t time;
377  uint32_t pid;
378  uint32_t cid;
379  uint32_t tag;
380  uint32_t len;
381  uint32_t sid;
383 
384 /* - VTBUF_ENTRY_TYPE__CollectiveOperation - */
385 
386 typedef struct
387 {
388  VTBuf_EntryTypes type;
389  uint32_t length;
390 
391  uint64_t time;
392  uint64_t etime;
393  uint32_t rid;
394  uint32_t cid;
395  uint32_t rpid;
396  uint32_t sent;
397  uint32_t recvd;
398  uint32_t sid;
400 
401 /* - VTBUF_ENTRY_TYPE__BeginCollectiveOperation - */
402 
403 typedef struct
404 {
405  VTBuf_EntryTypes type;
406  uint32_t length;
407 
408  uint64_t time;
409  uint32_t rid;
410  uint64_t mid;
411  uint32_t rpid;
412  uint32_t cid;
413  uint64_t sent;
414  uint64_t recvd;
415  uint32_t sid;
417 
418 /* - VTBUF_ENTRY_TYPE__EndCollectiveOperation - */
419 
420 typedef struct
421 {
422  VTBuf_EntryTypes type;
423  uint32_t length;
424 
425  uint64_t time;
426  uint64_t mid;
428 
429 /* - VTBUF_ENTRY_TYPE__RMAPut / VTBUF_ENTRY_TYPE__RMAPutRE / VTBUF_ENTRY_TYPE__RMAGet - */
430 
431 typedef struct
432 {
433  VTBuf_EntryTypes type;
434  uint32_t length;
435 
436  uint64_t time;
437  uint32_t opid;
438  uint32_t tpid;
439  uint32_t cid;
440  uint32_t tag;
441  uint64_t len;
442  uint32_t sid;
444 
445 /* - VTBUF_ENTRY_TYPE__RMAEnd - */
446 
447 typedef struct
448 {
449  VTBuf_EntryTypes type;
450  uint32_t length;
451 
452  uint64_t time;
453  uint32_t rpid;
454  uint32_t cid;
455  uint32_t tag;
456  uint32_t sid;
458 
459 /* - VTBUF_ENTRY_TYPE__FunctionSummary - */
460 
461 typedef struct
462 {
463  VTBuf_EntryTypes type;
464  uint32_t length;
465 
466  uint64_t time;
467  uint32_t rid;
468  uint64_t cnt;
469  uint64_t excl;
470  uint64_t incl;
472 
473 /* - VTBUF_ENTRY_TYPE__MessageSummary - */
474 
475 typedef struct
476 {
477  VTBuf_EntryTypes type;
478  uint32_t length;
479 
480  uint64_t time;
481  uint32_t peer;
482  uint32_t cid;
483  uint32_t tag;
484  uint64_t scnt;
485  uint64_t rcnt;
486  uint64_t sent;
487  uint64_t recvd;
489 
490 /* - VTBUF_ENTRY_TYPE__CollectiveOperationSummary - */
491 
492 typedef struct
493 {
494  VTBuf_EntryTypes type;
495  uint32_t length;
496 
497  uint64_t time;
498  uint32_t cid;
499  uint32_t rid;
500  uint64_t scnt;
501  uint64_t rcnt;
502  uint64_t sent;
503  uint64_t recvd;
505 
506 /* - VTBUF_ENTRY_TYPE__FileOperationSummary - */
507 
508 typedef struct
509 {
510  VTBuf_EntryTypes type;
511  uint32_t length;
512 
513  uint64_t time;
514  uint32_t fid;
515  uint64_t nopen;
516  uint64_t nclose;
517  uint64_t nread;
518  uint64_t nwrite;
519  uint64_t nseek;
520  uint64_t read;
521  uint64_t wrote;
523 
524 
525 /* -- Opaque data types -- */
526 
527 
528 /* - Trace file generated at run time - */
529 typedef struct VTGen_struct VTGen;
530 
531 /*
532  *-----------------------------------------------------------------------------
533  * VTGen
534  *-----------------------------------------------------------------------------
535  */
536 
537 EXTERN VTGen* VTGen_open(const char* tname, const char* tnamesuffix,
538  uint32_t ptid, uint32_t tid, size_t buffer_size);
539 
540 EXTERN void VTGen_guarantee(VTGen* gen, size_t size);
541 
542 EXTERN void VTGen_flush(VTGen* gen, uint8_t lastFlush,
543  uint64_t flushBTime, uint64_t* flushETime);
544 
545 EXTERN void VTGen_close(VTGen* gen);
546 
547 EXTERN void VTGen_delete(VTGen* gen);
548 
549 EXTERN void VTGen_destroy(VTGen* gen);
550 
551 EXTERN uint8_t VTGen_get_buflevel(VTGen* gen);
552 
553 
554 /* -- Writing trace records -- */
555 
556 
557 /* - Definition records - */
558 
559 EXTERN void VTGen_write_DEFINITION_COMMENT(VTGen* gen, const char* comment);
560 
561 EXTERN void VTGen_write_DEF_SCL_FILE(VTGen* gen, uint32_t fid,
562  const char* fname);
563 
564 EXTERN void VTGen_write_DEF_SCL(VTGen* gen, uint32_t sid, uint32_t fid,
565  uint32_t ln );
566 
567 EXTERN void VTGen_write_DEF_FILE_GROUP(VTGen* gen, uint32_t gid,
568  const char* gname);
569 
570 EXTERN void VTGen_write_DEF_FILE(VTGen* gen, uint32_t fid, const char* fname,
571  uint32_t gid);
572 
573 EXTERN void VTGen_write_DEF_FUNCTION_GROUP(VTGen* gen, uint32_t rdid,
574  const char* rdesc);
575 
576 EXTERN void VTGen_write_DEF_FUNCTION(VTGen* gen, uint32_t rid,
577  const char* rname, uint32_t rdid,
578  uint32_t sid );
579 
580 EXTERN void VTGen_write_DEF_COLLECTIVE_OPERATION(VTGen* gen, uint32_t cid,
581  const char* cname,
582  uint32_t ctype );
583 
584 EXTERN void VTGen_write_DEF_COUNTER_GROUP(VTGen* gen, uint32_t gid,
585  const char* gname);
586 
587 EXTERN void VTGen_write_DEF_COUNTER(VTGen* gen, uint32_t cid,
588  const char* cname, const char* cunit,
589  uint32_t cprop, uint32_t gid,
590  uint32_t pgid);
591 
592 EXTERN void VTGen_write_DEF_PROCESS_GROUP(VTGen* gen, uint32_t gid,
593  const char* grpn, uint32_t grpc,
594  uint32_t grpv[]);
595 
596 EXTERN void VTGen_write_DEF_PROCESS_GROUP_ATTRIBUTES(VTGen* gen, uint32_t gid,
597  uint32_t gattr);
598 
599 EXTERN void VTGen_write_DEF_KEYVAL(VTGen* gen, uint32_t kid, uint8_t vtype,
600  const char* kname);
601 
602 /* -- Marker -- */
603 
604 EXTERN void VTGen_write_DEF_MARKER(VTGen* gen, uint32_t mid, const char* mname,
605  uint32_t mtype);
606 
607 
608 /* - Event records - */
609 
610 
611 /* -- Region -- */
612 
613 EXTERN void VTGen_write_ENTER(VTGen* gen, uint64_t* time, uint32_t rid,
614  uint32_t sid);
615 
616 EXTERN void VTGen_write_LEAVE(VTGen* gen, uint64_t* time, uint32_t rid,
617  uint32_t sid);
618 
619 /* -- File I/O -- */
620 
621 EXTERN void VTGen_write_FILE_OPERATION(VTGen* gen, uint64_t* time,
622  uint64_t* etime, uint32_t fid,
623  uint64_t hid, uint32_t op,
624  uint64_t bytes, uint32_t sid);
625 
626 EXTERN void VTGen_write_BEGIN_FILE_OPERATION(VTGen* gen, uint64_t* time,
627  uint64_t mid, uint32_t sid);
628 
629 EXTERN void VTGen_write_END_FILE_OPERATION(VTGen* gen, uint64_t* time,
630  uint32_t fid, uint64_t mid,
631  uint64_t hid, uint32_t op,
632  uint64_t bytes, uint32_t sid);
633 
634 /* -- Counter -- */
635 
636 EXTERN void VTGen_write_COUNTER(VTGen* gen, uint64_t* time, uint32_t cid,
637  uint64_t cval);
638 
639 /* -- Comment -- */
640 
641 EXTERN void VTGen_write_COMMENT(VTGen* gen, uint64_t* time,
642  const char* comment);
643 
644 /* -- Marker -- */
645 
646 EXTERN void VTGen_write_MARKER(VTGen* gen, uint64_t* time, uint32_t mid,
647  const char* mtext);
648 
649 /* -- Key-Value -- */
650 
651 EXTERN void VTGen_write_KEYVAL(VTGen* gen, uint32_t kid, uint8_t vtype,
652  void* kvalue);
653 
654 /* -- MPI-1 -- */
655 
656 EXTERN void VTGen_write_SEND_MSG(VTGen* gen, uint64_t* time, uint32_t dpid,
657  uint32_t cid, uint32_t tag, uint32_t sent,
658  uint32_t sid);
659 
660 EXTERN void VTGen_write_RECV_MSG(VTGen* gen, uint64_t* time, uint32_t spid,
661  uint32_t cid, uint32_t tag, uint32_t recvd,
662  uint32_t sid);
663 
664 EXTERN void VTGen_write_COLLECTIVE_OPERATION(VTGen* gen, uint64_t* time,
665  uint64_t* etime, uint32_t rid,
666  uint32_t cid, uint32_t rpid,
667  uint32_t sent, uint32_t recvd,
668  uint32_t sid);
669 
670 EXTERN void VTGen_write_BEGIN_COLLECTIVE_OPERATION(VTGen* gen, uint64_t* time,
671  uint32_t rid, uint64_t mid,
672  uint32_t rpid, uint32_t cid,
673  uint64_t sent,
674  uint64_t recvd,
675  uint32_t sid);
676 
677 EXTERN void VTGen_write_END_COLLECTIVE_OPERATION(VTGen* gen, uint64_t* time,
678  uint64_t mid);
679 
680 /* -- MPI2 - 1sided -- */
681 
682 EXTERN void VTGen_write_RMA_PUT(VTGen* gen, uint64_t* time, uint32_t opid,
683  uint32_t tpid, uint32_t cid, uint32_t tag,
684  uint32_t len, uint32_t sid);
685 
686 EXTERN void VTGen_write_RMA_PUTRE(VTGen* gen, uint64_t* time, uint32_t opid,
687  uint32_t tpid, uint32_t cid, uint32_t tag,
688  uint64_t len, uint32_t sid);
689 
690 EXTERN void VTGen_write_RMA_GET(VTGen* gen, uint64_t* time, uint32_t opid,
691  uint32_t tpid, uint32_t cid, uint32_t tag,
692  uint64_t len, uint32_t sid);
693 
694 EXTERN void VTGen_write_RMA_END(VTGen* gen, uint64_t* time, uint32_t rpid,
695  uint32_t cid, uint32_t tag, uint32_t sid);
696 
697 /* -- VampirTrace Internal -- */
698 
699 EXTERN void VTGen_write_ENTER_FLUSH(VTGen* gen, uint64_t* time);
700 
701 EXTERN void VTGen_write_LEAVE_FLUSH(VTGen* gen, uint64_t* time);
702 
703 EXTERN void VTGen_write_ENTER_STAT(VTGen* gen, uint64_t* time);
704 
705 EXTERN void VTGen_write_LEAVE_STAT(VTGen* gen, uint64_t* time);
706 
707 /* - Summary records - */
708 
709 EXTERN void VTGen_write_FUNCTION_SUMMARY(VTGen* gen, uint64_t* time,
710  uint32_t rid, uint64_t cnt,
711  uint64_t excl, uint64_t incl);
712 
713 EXTERN void VTGen_write_MESSAGE_SUMMARY(VTGen* gen, uint64_t* time,
714  uint32_t peer, uint32_t cid,
715  uint32_t tag, uint64_t scnt,
716  uint64_t rcnt, uint64_t sent,
717  uint64_t recvd);
718 
719 EXTERN void VTGen_write_COLLECTIVE_OPERATION_SUMMARY(VTGen* gen,
720  uint64_t* time,
721  uint32_t cid,
722  uint32_t rid,
723  uint64_t scnt,
724  uint64_t rcnt,
725  uint64_t sent,
726  uint64_t recvd);
727 
728 EXTERN void VTGen_write_FILE_OPERATION_SUMMARY(VTGen* gen, uint64_t* time,
729  uint32_t fid, uint64_t nopen,
730  uint64_t nclose, uint64_t nread,
731  uint64_t nwrite, uint64_t nseek,
732  uint64_t read, uint64_t wrote);
733 
734 /* - Rewind - */
735 
736 EXTERN void VTGen_set_rewind_mark(VTGen* gen, uint64_t* time);
737 
738 EXTERN void VTGen_rewind(VTGen* gen, uint64_t* time);
739 
740 EXTERN uint8_t VTGen_is_rewind_mark_present(VTGen* gen);
741 
742 #endif /* _VT_GEN_OTF_H */
Definition: vt_otf_gen.h:258
Definition: vt_otf_gen.h:286
Definition: vt_otf_gen.h:210
Definition: vt_otf_gen.h:148
Definition: vt_otf_gen.h:223
Definition: vt_otf_gen.h:172
Definition: vt_otf_gen.h:159
Definition: vt_otf_gen.h:337
Definition: vt_otf_gen.h:420
Definition: vt_otf_gen.h:447
Definition: vt_otf_gen.h:92
Definition: vt_otf_gen.h:314
Definition: vt_otf_gen.h:386
Definition: vt_otf_gen.h:184
Definition: vt_otf_gen.h:431
Definition: vt_otf_gen.h:195
Definition: vt_otf_gen.h:326
Definition: vt_otf_gen.h:508
Definition: vt_otf_gen.h:234
Definition: vt_otf_gen.h:113
Definition: vt_otf_gen.h:349
Definition: vt_otf_gen.h:136
Definition: vt_otf_gen.h:84
Definition: vt_otf_gen.h:475
Definition: vt_otf_gen.h:246
Definition: vt_otf_gen.h:102
Definition: vt_otf_gen.h:270
Definition: vt_otf_gen.h:492
Definition: vt_otf_gen.h:403
Definition: vt_otf_gen.h:298
Definition: vt_otf_gen.h:125
Definition: vt_otf_gen.h:371
Definition: vt_otf_gen.c:90
Definition: vt_otf_gen.h:461