GPUOcelot
|
00001 00009 #ifndef TRACE_TRACEGENERATOR_H_INCLUDED 00010 #define TRACE_TRACEGENERATOR_H_INCLUDED 00011 00012 // C++ includes 00013 #include <string> 00014 #include <vector> 00015 00016 // forward declare TraceEvent 00017 namespace trace { 00018 class TraceEvent; 00019 } 00020 00021 // forward declare EmulatedKernel 00022 namespace executive { 00023 class ExecutableKernel; 00024 } 00025 00026 namespace trace { 00027 00031 class TraceGenerator { 00032 public: 00036 enum TraceFormat { 00037 ParallelismTraceFormat, 00038 BranchTraceFormat, 00039 MemoryTraceFormat, 00040 SharedComputationTraceFormat, 00041 InstructionTraceFormat, 00042 KernelDimensionsFormat, 00043 MachineAttributesFormat, 00044 WatchTraceFormat, 00045 WarpSynchronousTraceFormat, 00046 PerformanceBoundTraceFormat, 00047 ConvergenceTraceFormat, 00048 BasicBlockCountFormat, 00049 InvalidTraceFormat 00050 }; 00051 00052 public: 00056 std::string database; 00057 00058 public: 00059 TraceGenerator(); 00060 virtual ~TraceGenerator(); 00061 00065 virtual void initialize(const executive::ExecutableKernel& kernel); 00066 00072 virtual void event(const TraceEvent & event); 00073 00076 virtual void postEvent(const TraceEvent & event); 00077 00081 virtual void finish(); 00082 }; 00083 00084 typedef std::vector< TraceGenerator *> TraceGeneratorVector; 00085 } 00086 00087 #endif 00088