3

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::EventVECTOR_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,
    ... )
4

1 に答える 1

2

たぶん、実行event.wait()してから別のイベントをキューに入れることができます。このリンクを参照してください。

于 2012-12-29T23:17:38.817 に答える