21 #ifndef _kernels_trace_h_
22 #define _kernels_trace_h_
43 #if defined(PASTIX_GENERATE_MODEL)
49 typedef struct pastix_model_entry_s {
55 } pastix_model_entry_t;
57 extern pastix_model_entry_t *model_entries;
58 extern volatile int32_t model_entries_nbr;
59 extern int32_t model_size;
91 #if defined(PASTIX_WITH_EZTRACE)
93 if (pastix_eztrace_level == 1) {
94 EZTRACE_EVENT_PACKED_0( KERNELS_LVL1_CODE(ktype) );
99 #if defined(PASTIX_GENERATE_MODEL)
142 #if defined(PASTIX_WITH_EZTRACE)
144 if (pastix_eztrace_level == 1) {
150 #if defined(PASTIX_GENERATE_MODEL)
153 double time = clockGet() - starttime;
154 int32_t index = pastix_atomic_inc_32b( &model_entries_nbr );
156 if ( index < model_size ) {
157 model_entries[index].ktype = ktype;
158 model_entries[index].m = m;
159 model_entries[index].n = n;
160 model_entries[index].k = k;
161 model_entries[index].time = time;
164 fprintf(stderr,
"WARNING: too many kernels to log %d\n", index);
enum pastix_ktype_e pastix_ktype_t
List of the Level 1 events that may be traced in PaStiX.
static void kernel_trace_stop(int8_t inlast, pastix_ktype_t ktype, int m, int n, int k, double flops, double starttime)
Stop the trace of a single kernel.
double overall_flops[3]
Overall number of flops.
static double kernel_trace_start(pastix_ktype_t ktype)
Start the trace of a single kernel.
void kernelsTraceStart(void)
Resumes the trace module.
pastix_atomic_lock_t lock_flops
Lock to accumulate flops.
#define PastixKernelStop
Main stop enum event for all the events in traces.
void kernelsTraceFinalize(const pastix_data_t *pastix_data)
Stops the trace module.
volatile double kernels_flops[PastixKernelLvl1Nbr]
Global array to store the number of flops executed per kernel.
void kernelsTraceStop(void)
Pauses the trace module.
void kernelsTraceInit(const pastix_data_t *pastix_data, pastix_trace_t trace)
Starts the trace module.
enum pastix_trace_e pastix_trace_t
Steps to trace.
Main PaStiX data structure.