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,
... )