Commit 7839b237 authored by Joseph Noir's avatar Joseph Noir

Fix logging and promise creation in libcaf_opencl

parent df9971c1
...@@ -166,10 +166,10 @@ public: ...@@ -166,10 +166,10 @@ public:
cmd->enqueue(); cmd->enqueue();
} }
void enqueue(mailbox_element_ptr ptr, execution_unit* eu) override { void enqueue(mailbox_element_ptr ptr, execution_unit*) override {
CAF_ASSERT(ptr != nullptr); CAF_ASSERT(ptr != nullptr);
CAF_LOG_TRACE(CAF_ARG(*ptr)); CAF_LOG_TRACE(CAF_ARG(*ptr));
response_promise promise{eu, ctrl(), *ptr}; response_promise promise{ctrl(), *ptr};
enqueue(ptr->sender, ptr->mid, ptr->move_content_to_message(), enqueue(ptr->sender, ptr->mid, ptr->move_content_to_message(),
std::move(promise)); std::move(promise));
} }
......
...@@ -140,8 +140,7 @@ public: ...@@ -140,8 +140,7 @@ public:
if (!invoke_cl(clSetEventCallback, callback_.get(), CL_COMPLETE, if (!invoke_cl(clSetEventCallback, callback_.get(), CL_COMPLETE,
std::move(cb), this)) std::move(cb), this))
return; return;
if (clFlush(parent->queue_.get()) != CL_SUCCESS) v3callcl(clFlush, parent->queue_.get());
CAF_LOG_ERROR("clFlush: " << CAF_ARG(get_opencl_error(err)));
} }
/// Enqueue the kernel for execution and send the mem_refs relating to the /// Enqueue the kernel for execution and send the mem_refs relating to the
...@@ -180,8 +179,7 @@ public: ...@@ -180,8 +179,7 @@ public:
if (!invoke_cl(clSetEventCallback, callback_.get(), CL_COMPLETE, if (!invoke_cl(clSetEventCallback, callback_.get(), CL_COMPLETE,
std::move(cb), this)) std::move(cb), this))
return; return;
if (clFlush(parent->queue_.get()) != CL_SUCCESS) v3callcl(clFlush, parent->queue_.get());
CAF_LOG_ERROR("clFlush: " << CAF_ARG(get_opencl_error(err)));
auto msg = msg_adding_event{callback_}(results_); auto msg = msg_adding_event{callback_}(results_);
promise_.deliver(std::move(msg)); promise_.deliver(std::move(msg));
} }
......
...@@ -46,6 +46,14 @@ void v2callcl(const char* fname, F f, Ts&&... vs) { ...@@ -46,6 +46,14 @@ void v2callcl(const char* fname, F f, Ts&&... vs) {
throwcl(fname, f(std::forward<Ts>(vs)..., nullptr)); throwcl(fname, f(std::forward<Ts>(vs)..., nullptr));
} }
// call convention for simply calling a function, and logging errors
template <class F, class... Ts>
void v3callcl(F f, Ts&&... vs) {
auto err = f(std::forward<Ts>(vs)...);
if (err != CL_SUCCESS)
CAF_LOG_ERROR("error: " << opencl_error(err));
}
// call convention with `result` argument at the end returning `err`, not // call convention with `result` argument at the end returning `err`, not
// using the second last argument (set to nullptr) nor the one before (set to 0) // using the second last argument (set to nullptr) nor the one before (set to 0)
template <class R, class F, class... Ts> template <class R, class F, class... Ts>
......
...@@ -189,50 +189,50 @@ std::string event_status(cl_event e) { ...@@ -189,50 +189,50 @@ std::string event_status(cl_event e) {
return ss.str(); return ss.str();
} }
switch (s) { switch (s) {
case(CL_QUEUED): case(CL_QUEUED):
ss << std::string("CL_QUEUED"); ss << std::string("CL_QUEUED");
break; break;
case(CL_SUBMITTED): case(CL_SUBMITTED):
ss << std::string("CL_SUBMITTED"); ss << std::string("CL_SUBMITTED");
break; break;
case(CL_RUNNING): case(CL_RUNNING):
ss << std::string("CL_RUNNING"); ss << std::string("CL_RUNNING");
break; break;
case(CL_COMPLETE): case(CL_COMPLETE):
ss << std::string("CL_COMPLETE"); ss << std::string("CL_COMPLETE");
break; break;
default: default:
ss << std::string("DEFAULT ") + std::to_string(s); ss << std::string("DEFAULT ") + std::to_string(s);
return ss.str(); return ss.str();
} }
ss << " / "; ss << " / ";
switch (t) { switch (t) {
case(CL_COMMAND_NDRANGE_KERNEL): case(CL_COMMAND_NDRANGE_KERNEL):
ss << std::string("CL_COMMAND_NDRANGE_KERNEL"); ss << std::string("CL_COMMAND_NDRANGE_KERNEL");
break; break;
case(CL_COMMAND_TASK): case(CL_COMMAND_TASK):
ss << std::string("CL_COMMAND_TASK"); ss << std::string("CL_COMMAND_TASK");
break; break;
case(CL_COMMAND_NATIVE_KERNEL): case(CL_COMMAND_NATIVE_KERNEL):
ss << std::string("CL_COMMAND_NATIVE_KERNEL"); ss << std::string("CL_COMMAND_NATIVE_KERNEL");
break; break;
case(CL_COMMAND_READ_BUFFER): case(CL_COMMAND_READ_BUFFER):
ss << std::string("CL_COMMAND_READ_BUFFER"); ss << std::string("CL_COMMAND_READ_BUFFER");
break; break;
case(CL_COMMAND_WRITE_BUFFER): case(CL_COMMAND_WRITE_BUFFER):
ss << std::string("CL_COMMAND_WRITE_BUFFER"); ss << std::string("CL_COMMAND_WRITE_BUFFER");
break; break;
case(CL_COMMAND_COPY_BUFFER): case(CL_COMMAND_COPY_BUFFER):
ss << std::string("CL_COMMAND_COPY_BUFFER"); ss << std::string("CL_COMMAND_COPY_BUFFER");
break; break;
case(CL_COMMAND_READ_IMAGE): case(CL_COMMAND_READ_IMAGE):
ss << std::string("CL_COMMAND_READ_IMAGE"); ss << std::string("CL_COMMAND_READ_IMAGE");
break; break;
case(CL_COMMAND_WRITE_IMAGE): case(CL_COMMAND_WRITE_IMAGE):
ss << std::string("CL_COMMAND_WRITE_IMAGE"); ss << std::string("CL_COMMAND_WRITE_IMAGE");
break; break;
case(CL_COMMAND_COPY_IMAGE): case(CL_COMMAND_COPY_IMAGE):
ss << std::string("CL_COMMAND_COPY_IMAGE"); ss << std::string("CL_COMMAND_COPY_IMAGE");
break; break;
case(CL_COMMAND_COPY_BUFFER_TO_IMAGE): case(CL_COMMAND_COPY_BUFFER_TO_IMAGE):
ss << std::string("CL_COMMAND_COPY_BUFFER_TO_IMAGE"); ss << std::string("CL_COMMAND_COPY_BUFFER_TO_IMAGE");
...@@ -241,46 +241,46 @@ std::string event_status(cl_event e) { ...@@ -241,46 +241,46 @@ std::string event_status(cl_event e) {
ss << std::string("CL_COMMAND_COPY_IMAGE_TO_BUFFER"); ss << std::string("CL_COMMAND_COPY_IMAGE_TO_BUFFER");
break; break;
case(CL_COMMAND_MAP_BUFFER): case(CL_COMMAND_MAP_BUFFER):
ss << std::string("CL_COMMAND_MAP_BUFFER"); ss << std::string("CL_COMMAND_MAP_BUFFER");
break; break;
case(CL_COMMAND_MAP_IMAGE): case(CL_COMMAND_MAP_IMAGE):
ss << std::string("CL_COMMAND_MAP_IMAGE"); ss << std::string("CL_COMMAND_MAP_IMAGE");
break; break;
case(CL_COMMAND_UNMAP_MEM_OBJECT): case(CL_COMMAND_UNMAP_MEM_OBJECT):
ss << std::string("CL_COMMAND_UNMAP_MEM_OBJECT"); ss << std::string("CL_COMMAND_UNMAP_MEM_OBJECT");
break; break;
case(CL_COMMAND_MARKER): case(CL_COMMAND_MARKER):
ss << std::string("CL_COMMAND_MARKER"); ss << std::string("CL_COMMAND_MARKER");
break; break;
case(CL_COMMAND_ACQUIRE_GL_OBJECTS): case(CL_COMMAND_ACQUIRE_GL_OBJECTS):
ss << std::string("CL_COMMAND_ACQUIRE_GL_OBJECTS"); ss << std::string("CL_COMMAND_ACQUIRE_GL_OBJECTS");
break; break;
case(CL_COMMAND_RELEASE_GL_OBJECTS): case(CL_COMMAND_RELEASE_GL_OBJECTS):
ss << std::string("CL_COMMAND_RELEASE_GL_OBJECTS"); ss << std::string("CL_COMMAND_RELEASE_GL_OBJECTS");
break; break;
case(CL_COMMAND_READ_BUFFER_RECT): case(CL_COMMAND_READ_BUFFER_RECT):
ss << std::string("CL_COMMAND_READ_BUFFER_RECT"); ss << std::string("CL_COMMAND_READ_BUFFER_RECT");
break; break;
case(CL_COMMAND_WRITE_BUFFER_RECT): case(CL_COMMAND_WRITE_BUFFER_RECT):
ss << std::string("CL_COMMAND_WRITE_BUFFER_RECT"); ss << std::string("CL_COMMAND_WRITE_BUFFER_RECT");
break; break;
case(CL_COMMAND_COPY_BUFFER_RECT): case(CL_COMMAND_COPY_BUFFER_RECT):
ss << std::string("CL_COMMAND_COPY_BUFFER_RECT"); ss << std::string("CL_COMMAND_COPY_BUFFER_RECT");
break; break;
case(CL_COMMAND_USER): case(CL_COMMAND_USER):
ss << std::string("CL_COMMAND_USER"); ss << std::string("CL_COMMAND_USER");
break; break;
case(CL_COMMAND_BARRIER): case(CL_COMMAND_BARRIER):
ss << std::string("CL_COMMAND_BARRIER"); ss << std::string("CL_COMMAND_BARRIER");
break; break;
case(CL_COMMAND_MIGRATE_MEM_OBJECTS): case(CL_COMMAND_MIGRATE_MEM_OBJECTS):
ss << std::string("CL_COMMAND_MIGRATE_MEM_OBJECTS"); ss << std::string("CL_COMMAND_MIGRATE_MEM_OBJECTS");
break; break;
case(CL_COMMAND_FILL_BUFFER): case(CL_COMMAND_FILL_BUFFER):
ss << std::string("CL_COMMAND_FILL_BUFFER"); ss << std::string("CL_COMMAND_FILL_BUFFER");
break; break;
case(CL_COMMAND_FILL_IMAGE): case(CL_COMMAND_FILL_IMAGE):
ss << std::string("CL_COMMAND_FILL_IMAGE"); ss << std::string("CL_COMMAND_FILL_IMAGE");
break; break;
default: default:
ss << std::string("DEFAULT ") + std::to_string(s); ss << std::string("DEFAULT ") + std::to_string(s);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment