5#define DSDP_MAX_EVENT_NAME_LENGTH 50
6#define DSDP_MAX_EVENTS 30
18 char ename[DSDP_MAX_EVENT_NAME_LENGTH];
23 EventInfo
event[DSDP_MAX_EVENTS];
29static EventLog eventlog;
33#define __FUNCT__ "DSDPEventLogBegin"
34int DSDPEventLogBegin(
int eventid){
37 if (eventid<=0){
return 0;}
38 if (eventlog.event[eventid].begintime!=0 && eventid!=DSDP_MAX_EVENTS-1){
39 DSDPPrintf(
"Timing error: id: %d %s. Call begin without calling end.%4.4e\n",eventid,eventlog.event[eventid].ename,eventlog.event[eventid].begintime);
41 eventlog.event[eventid].begintime=tt;
42 eventlog.event[eventid].counter++;
47#define __FUNCT__ "DSDPEventLogEnd"
48int DSDPEventLogEnd(
int eventid){
51 if (eventid<=0){
return 0;}
52 tt=tt-eventlog.event[eventid].begintime;
53 eventlog.event[eventid].totaltime+=tt;
54 eventlog.event[eventid].begintime=0;
59#define __FUNCT__ "DSDPEventLogRegister"
60int DSDPEventLogRegister(
const char *ename,
int *eventid){
63 if (id<0 || id>=DSDP_MAX_EVENTS){ *eventid=DSDP_MAX_EVENTS-1;
return 0;}
64 eventlog.event[id].begintime=0;
65 eventlog.event[id].totaltime=0;
66 eventlog.event[id].counter=0;
67 strncpy(eventlog.event[
id].ename,ename,DSDP_MAX_EVENT_NAME_LENGTH-1);
74#define __FUNCT__ "DSDPEventLogInitialize"
75int DSDPEventLogInitialize(
void){
80 for (i=0;i<DSDP_MAX_EVENTS;i++){
81 eventlog.event[i].begintime=0;
82 eventlog.event[i].totaltime=0;
83 eventlog.event[i].counter=0;
84 strncpy(eventlog.event[i].ename,
"",DSDP_MAX_EVENT_NAME_LENGTH-1);
91#define __FUNCT__ "DSDPEventLogSummary"
92int DSDPEventLogSummary(
void){
94 double etime,ttime,tfinal;
97 DSDPPrintf(
"DSDP Timing is not turned on. Check installation and recompile. \n\n");
99 ttime=tfinal-eventlog.time0;
101 DSDPPrintf(
"PERFORMANCE SUMMARY\n");
102 DSDPPrintf(
" Event Calls Time(s) Time(%%)\n");
103 DSDPPrintf(
"--------------------------------------------------------------------------\n");
104 for (i=1;i<eventlog.nevents;i++){
105 etime=eventlog.event[i].totaltime;
106 if (etime==0 || eventlog.event[i].counter==0)
continue;
107 DSDPPrintf(
" %40s %9d %4.4e %5.2f\n",eventlog.event[i].ename,eventlog.event[i].counter,etime,100*etime/ttime);
109 DSDPPrintf(
"--------------------------------------------------------------------------\n");
112 fprintf(dsdpoutputfile,
"PERFORMANCE SUMMARY\n");
113 fprintf(dsdpoutputfile,
" Event Calls Time(s) Time(%%)\n");
114 fprintf(dsdpoutputfile,
"--------------------------------------------------------------------------\n");
115 for (i=1;i<eventlog.nevents;i++){
116 etime=eventlog.event[i].totaltime;
117 if (etime==0 || eventlog.event[i].counter==0)
continue;
118 fprintf(dsdpoutputfile,
" %40s %9d %4.4e %5.2f\n",eventlog.event[i].ename,eventlog.event[i].counter,etime,100*etime/ttime);
120 fprintf(dsdpoutputfile,
"--------------------------------------------------------------------------\n");
Error handling, printing, and profiling.