Go to the source code of this file.
|
#define | CL_FINISH(queue) queue.finish() |
|
#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() |
|
◆ 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)
◆ 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 | ) |
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)