spla
Loading...
Searching...
No Matches
cl_debug.hpp File Reference
Include dependency graph for cl_debug.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CL_FINISH(queue)
 
#define CL_DISPATCH_PROFILED(name, queue, kernel, ...)
 
#define CL_READ_PROFILED(name, queue, buffer, ...)
 
#define CL_COUNTER_GET(name, queue, counter, value)
 
#define CL_COUNTER_SET(name, queue, counter, value)
 
#define CL_PROFILE_BEGIN(name, queue)
 
#define CL_PROFILE_END()
 

Macro Definition Documentation

◆ CL_COUNTER_GET

#define CL_COUNTER_GET ( name,
queue,
counter,
value )
Value:
do { \
CL_FINISH(queue); \
{ \
TIME_PROFILE_SUBSCOPE(name); \
cl::Event __cl_event; \
(value) = (counter).get(queue, &__cl_event); \
__cl_event.wait(); \
cl_ulong __queued = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_QUEUED>(); \
cl_ulong __start = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_START>(); \
cl_ulong __end = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_END>(); \
TIME_PROFILE_SUBLABEL.queued_nano = __end - __queued; \
TIME_PROFILE_SUBLABEL.executed_nano = __end - __start; \
CL_FINISH(queue); \
} \
} while (false)
#define TIME_PROFILE_SUBLABEL
Definition time_profiler.hpp:86

◆ CL_COUNTER_SET

#define CL_COUNTER_SET ( name,
queue,
counter,
value )
Value:
do { \
CL_FINISH(queue); \
{ \
TIME_PROFILE_SUBSCOPE(name); \
cl::Event __cl_event; \
(counter).set(queue, (value), &__cl_event); \
__cl_event.wait(); \
cl_ulong __queued = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_QUEUED>(); \
cl_ulong __start = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_START>(); \
cl_ulong __end = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_END>(); \
TIME_PROFILE_SUBLABEL.queued_nano = __end - __queued; \
TIME_PROFILE_SUBLABEL.executed_nano = __end - __start; \
CL_FINISH(queue); \
} \
} while (false)

◆ CL_DISPATCH_PROFILED

#define CL_DISPATCH_PROFILED ( name,
queue,
kernel,
... )
Value:
do { \
CL_FINISH(queue); \
{ \
TIME_PROFILE_SUBSCOPE(name); \
cl::Event __cl_event; \
queue.enqueueNDRangeKernel(kernel, __VA_ARGS__, nullptr, &__cl_event); \
__cl_event.wait(); \
cl_ulong __queued = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_QUEUED>(); \
cl_ulong __start = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_START>(); \
cl_ulong __end = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_END>(); \
TIME_PROFILE_SUBLABEL.queued_nano = __end - __queued; \
TIME_PROFILE_SUBLABEL.executed_nano = __end - __start; \
CL_FINISH(queue); \
} \
} while (false)

◆ CL_FINISH

#define CL_FINISH ( queue)
Value:
queue.finish()

◆ CL_PROFILE_BEGIN

#define CL_PROFILE_BEGIN ( name,
queue )
Value:
do { \
auto& __prfq = queue; \
CL_FINISH(__prfq); \
{ \
TIME_PROFILE_SUBSCOPE(name);

◆ CL_PROFILE_END

#define CL_PROFILE_END ( )
Value:
} \
CL_FINISH(__prfq); \
} \
while (false)

◆ CL_READ_PROFILED

#define CL_READ_PROFILED ( name,
queue,
buffer,
... )
Value:
do { \
CL_FINISH(queue); \
{ \
TIME_PROFILE_SUBSCOPE(name); \
cl::Event __cl_event; \
queue.enqueueReadBuffer(buffer, __VA_ARGS__, nullptr, &__cl_event); \
__cl_event.wait(); \
cl_ulong __queued = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_QUEUED>(); \
cl_ulong __start = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_START>(); \
cl_ulong __end = __cl_event.getProfilingInfo<CL_PROFILING_COMMAND_END>(); \
TIME_PROFILE_SUBLABEL.queued_nano = __end - __queued; \
TIME_PROFILE_SUBLABEL.executed_nano = __end - __start; \
CL_FINISH(queue); \
} \
} while (false)