Hello all,
I’m trying out SYCL for the first time after a decade-long experience in GPGPU with CUDA and OpenCL, and I’m using the CodePlay ComputeCpp SDK (CE version 2.30, x86_64-linux-gnu) to try some simple examples.
After finally getting the first complete example working, I’ve started playing around and one thing I noticed is that the the wait()
method of the event
class seems to return before the event is actually complete.
I’m checking for this using a simple
init_evt.wait();
std::cout << "Event status: " << event_status_name(init_evt) << std::endl;
where event_status_name
is defined as:
std::string event_status_name(cl::sycl::info::event_command_status status)
{
switch (status) {
case cl::sycl::info::event_command_status::submitted: return "submitted";
case cl::sycl::info::event_command_status::running: return "running";
case cl::sycl::info::event_command_status::complete: return "complete";
default: return "unknown (" + std::to_string(int(status)) + ")";
}
}
std::string event_status_name(cl::sycl::event evt)
{
return event_status_name(evt.get_info<cl::sycl::info::event::command_execution_status>());
}
and the output I get is:
Wait ...
Event status: running
whereas after a queue.wait
I get complete
, as expected. Is this expected? A known issue? Am I doing something wrong? I can provide the full source of a minimal example (and open a GitHub issue) if necessary.
Thanks,