LAMA
/home/brandes/workspace/LAMA/src/lama/tracing.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_TRACING_HPP_
00034 #define LAMA_TRACING_HPP_
00035 
00036 /* ToDo: use it from CUDA directory
00037 #ifdef LAMA_BUILD_CUDA
00038     #include <lama/tracing/CUDATracerHelper.hpp>
00039 #endif
00040 */
00041 
00042 #if defined( LAMA_TRACE_LEVEL_VT ) || defined( LAMA_TRACE_LEVEL_TIME )
00043 
00044     #include <lama/tracing/TraceRegionRecord.hpp>
00045 
00046     #define LAMA_REGION( name ) tracing::TraceRegionRecord LAMA_Trc__( name, __FILE__, __LINE__ ) 
00047 
00048     #define LAMA_REGION_N( name, n ) tracing::TraceRegionRecord LAMA_Trc__( name, n, __FILE__, __LINE__ ) 
00049 
00050     #define LAMA_REGION_START( name ) tracing::TraceRegionRecord::start( name, __FILE__, __LINE__ )
00051 
00052     #define LAMA_REGION_END( name ) tracing::TraceRegionRecord::stop( name )
00053 
00054     /* ToDo: use it from CUDA subdirectory
00055     #ifdef LAMA_BUILD_CUDA
00056         #define LAMA_CUDAREGION( name, syncToken ) \
00057         CUDATracerHelper<tracing::TraceRegionRecord> LAMA_Trc__( name, __FILE__, __LINE__, syncToken )
00058     #else
00059         #define LAMA_CUDAREGION( name, syncToken )
00060     #endif
00061 
00062     #ifdef LAMA_BUILD_OPENCL
00063         //TODO: OpenCLTracerHelper
00064         #define LAMA_OPENCLREGION( name, syncToken )
00065     #else
00066         #define LAMA_OPENCLREGION( name, syncToken )
00067     #endif
00068     */
00069 
00070     #define LAMA_TIMETRACER( name ) tracing::TraceRegionRecord::spentLast( name )
00071 
00072 #elif defined( LAMA_TRACE_LEVEL_SIMPLE )
00073 
00074     #include <lama/tracing/LAMASimpleTimeTracer.hpp>
00075 
00076     #define LAMA_REGION( name ) LAMASimpleTimeTracer LAMA_Trc__( name, __FILE__, __LINE__ )
00077 
00078     #define LAMA_REGION_N( name, n )
00079 
00080     #define LAMA_REGION_START( name )
00081 
00082     #define LAMA_REGION_END( name )
00083 
00084     #ifdef LAMA_BUILD_CUDA
00085         #define LAMA_CUDAREGION( name, syncToken ) \
00086         CUDATracerHelper<LAMASimpleTimeTracer> LAMA_Trc__( name, __FILE__, __LINE__, syncToken )
00087     #else
00088         #define LAMA_CUDAREGION( name, syncToken )
00089     #endif
00090 
00091     #ifdef LAMA_BUILD_OPENCL
00092         //TODO: OpenCLTracerHelper
00093         #define LAMA_OPENCLREGION( name, syncToken )
00094     #else
00095         #define LAMA_OPENCLREGION( name, syncToken )
00096     #endif
00097 
00098     #define LAMA_TIMETRACER( name ) LAMASimpleTimeTracer::spentLast( name )
00099 
00100 #elif defined( LAMA_TRACE_LEVEL_OFF ) 
00101 
00102     #define LAMA_REGION( name )
00103 
00104     #define LAMA_REGION_START( name )
00105 
00106     #define LAMA_REGION_END( name )
00107 
00108     #define LAMA_REGION_N( name, n )
00109 
00110     #define LAMA_CUDAREGION( name, syncToken )
00111 
00112     #define LAMA_OPENCLREGION( name, syncToken )
00113 
00114     #define LAMA_TIMETRACER( name ) 0.0
00115 
00116 #else
00117 
00118     //Macro LAMA_REGION should also be defined in case of error for convenience with Eclipse.
00119 
00120     #define LAMA_REGION( name )
00121 
00122     #define LAMA_REGION_START( name )
00123 
00124     #define LAMA_REGION_END( name )
00125 
00126     #define LAMA_REGION_N( name, n )
00127 
00128     #define LAMA_CUDAREGION( name, syncToken )
00129 
00130     #define LAMA_OPENCLREGION( name, syncToken )
00131 
00132     #define LAMA_TIMETRACER( name ) 0.0
00133 
00134     #error "Must define LAMA_TRACE_LEVEL_xxx with xxx = VT, TIME, SIMPLE, or OFF"
00135 
00136 #endif
00137 
00138 #endif // LAMA_TRACING_HPP_