diff options
Diffstat (limited to 'arm_compute/runtime')
-rw-r--r-- | arm_compute/runtime/CL/CLScheduler.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arm_compute/runtime/CL/CLScheduler.h b/arm_compute/runtime/CL/CLScheduler.h index 11affebc48..1a7befc046 100644 --- a/arm_compute/runtime/CL/CLScheduler.h +++ b/arm_compute/runtime/CL/CLScheduler.h @@ -32,6 +32,28 @@ #include "arm_compute/core/Types.h" #include "arm_compute/runtime/CL/CLTuner.h" +#if defined(ARM_COMPUTE_DEBUG_ENABLED) +namespace +{ +void printf_callback(const char *buffer, unsigned int len, size_t complete, void *user_data) +{ + printf("%.*s", len, buffer); +} + +// Create a cl_context with a printf_callback and user specified buffer size. +cl_context_properties properties[] = +{ + // Enable a printf callback function for this context. + CL_PRINTF_CALLBACK_ARM, reinterpret_cast<cl_context_properties>(printf_callback), + // Request a minimum printf buffer size of 4MB for devices in the + // context that support this extension. + CL_PRINTF_BUFFERSIZE_ARM, static_cast<cl_context_properties>(0x100000), + CL_CONTEXT_PLATFORM, reinterpret_cast<cl_context_properties>(cl::Platform::get()()), + 0 +}; +} +#endif /* defined(ARM_COMPUTE_DEBUG_ENABLED) */ + namespace arm_compute { class ICLKernel; @@ -60,6 +82,10 @@ public: */ void default_init(ICLTuner *cl_tuner = nullptr) { +#if defined(ARM_COMPUTE_DEBUG_ENABLED) + cl::Context::setDefault(cl::Context(CL_DEVICE_TYPE_DEFAULT, properties)); +#endif // defined(ARM_COMPUTE_DEBUG_ENABLED) + CLKernelLibrary::get().init("./cl_kernels/", cl::Context::getDefault(), cl::Device::getDefault()); init(cl::Context::getDefault(), cl::CommandQueue::getDefault(), cl::Device::getDefault(), cl_tuner); } |