idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * File name: ompprof.h idamnjanovic@51: * idamnjanovic@51: * Ron Rubinstein idamnjanovic@51: * Computer Science Department idamnjanovic@51: * Technion, Haifa 32000 Israel idamnjanovic@51: * ronrubin@cs idamnjanovic@51: * idamnjanovic@51: * Last Updated: 18.8.2009 idamnjanovic@51: * idamnjanovic@51: * Collection of definitions and functions for profiling the OMP method. idamnjanovic@51: * idamnjanovic@51: *************************************************************************/ idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: #ifndef __OMP_PROF_H__ idamnjanovic@51: #define __OMP_PROF_H__ idamnjanovic@51: idamnjanovic@51: #include "mex.h" idamnjanovic@51: #include idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * Constants and data types. idamnjanovic@51: * idamnjanovic@51: **************************************************************************/ idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /* constants denoting the various parts of the algorithm */ idamnjanovic@51: idamnjanovic@51: enum { DtX_TIME, XtX_TIME, DtR_TIME, MAXABS_TIME, DtD_TIME, LCHOL_TIME, COMPCOEF_TIME, idamnjanovic@51: UPDATE_DtR_TIME, UPDATE_RESNORM_TIME, COMPRES_TIME, INDEXSORT_TIME }; idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /* profiling data container with counters for each part of the algorithm */ idamnjanovic@51: idamnjanovic@51: typedef struct profdata idamnjanovic@51: { idamnjanovic@51: clock_t prevtime; /* the time when last initialization/call to addproftime() was performed */ idamnjanovic@51: idamnjanovic@51: clock_t DtX_time; idamnjanovic@51: clock_t XtX_time; idamnjanovic@51: clock_t DtR_time; idamnjanovic@51: clock_t maxabs_time; idamnjanovic@51: clock_t DtD_time; idamnjanovic@51: clock_t Lchol_time; idamnjanovic@51: clock_t compcoef_time; idamnjanovic@51: clock_t update_DtR_time; idamnjanovic@51: clock_t update_resnorm_time; idamnjanovic@51: clock_t compres_time; idamnjanovic@51: clock_t indexsort_time; idamnjanovic@51: idamnjanovic@51: /* flags indicating whether profiling data was gathered */ idamnjanovic@51: int DtX_time_counted; idamnjanovic@51: int XtX_time_counted; idamnjanovic@51: int DtR_time_counted; idamnjanovic@51: int DtD_time_counted; idamnjanovic@51: int update_DtR_time_counted; idamnjanovic@51: int resnorm_time_counted; idamnjanovic@51: int compres_time_counted; idamnjanovic@51: int indexsort_time_counted; idamnjanovic@51: idamnjanovic@51: } profdata; idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * Initialize a profdata structure, zero all counters, and start its timer. idamnjanovic@51: * idamnjanovic@51: **************************************************************************/ idamnjanovic@51: void initprofdata(profdata *pd); idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * Add elapsed time from last call to addproftime(), or from initialization idamnjanovic@51: * of profdata, to the counter specified by comptype. comptype must be one idamnjanovic@51: * of the constants in the enumeration above. idamnjanovic@51: * idamnjanovic@51: **************************************************************************/ idamnjanovic@51: void addproftime(profdata *pd, int comptype); idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: /************************************************************************** idamnjanovic@51: * idamnjanovic@51: * Print the current contents of the counters in profdata. idamnjanovic@51: * idamnjanovic@51: * Parameters: idamnjanovic@51: * pd - the profdata to print idamnjanovic@51: * erroromp - indicates whether error-based (nonzero) or sparsity-based (zero) idamnjanovic@51: * omp was performed. idamnjanovic@51: * batchomp - indicates whether batch-omp (nonzero) or omp-cholesky (zero) idamnjanovic@51: * omp was performed. idamnjanovic@51: * signum - number of signals processed by omp idamnjanovic@51: * idamnjanovic@51: **************************************************************************/ idamnjanovic@51: void printprofinfo(profdata *pd, int erroromp, int batchomp, int signum); idamnjanovic@51: idamnjanovic@51: idamnjanovic@51: #endif idamnjanovic@51: