OpenCL C++ バインディング(ドキュメント)を使用して、キューに入れられたコマンドを 1 つだけ待機させることは可能です cl::Eventか?
enqueueReadBuffer()例として の署名を見てみましょう。
cl_int cl::CommandQueue::enqueueReadBuffer(
...
const VECTOR_CLASS<Event>* events = NULL,
... )
VECTOR_CLASSの(eg std::vector)へのポインタがcl::Event必要であり、単一の の場合のオーバーロードはありませんcl::Event。もちろん、シングルcl::EventをVECTOR_CLASSサイズ 1 にラップすることもできますが、それはあまり良い解決策ではないようです。cl::Eventシングルを待つのはかなり一般的なことのように思えるので、より良い解決策があるかどうか疑問に思っていました...
この問題はOpenCL C API (ドキュメント) には存在しないことに注意してください。このAPIでは、 a へのポインターと読み取られる scl_eventの数を渡しcl_eventます。
cl_int clEnqueueReadBuffer (
cl_command_queue command_queue,
...
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
... )