2012-12-15 52 views
3

使用OpenCL C++ bindingsdocumentation),是否有可能排隊的命令只能等待一個cl::EventOpenCL C++綁定:等待一個cl :: Event?

讓我們來看看enqueueReadBuffer()的簽名作爲一個例子:

cl_int cl::CommandQueue::enqueueReadBuffer(
    ... 
    const VECTOR_CLASS<Event>* events = NULL, 
    ...) 

它期待一個指向的cl::Event一個VECTOR_CLASS(例如std::vector)並且沒有過載單個cl::Event的情況下。當然可以將一個cl::Event包裝成一個尺寸爲1的VECTOR_CLASS,但這似乎不是一個很好的解決方案。我想知道是否有更好的解決方案,因爲等待一個cl::Event似乎是一個很常見的事做......

注意這個問題不會在OpenCL C APIdocumentation)存在,在那裏你傳遞一個指針到cl_event和讀取的數量cl_event

cl_int clEnqueueReadBuffer ( 
    cl_command_queue command_queue, 
    ... 
    cl_uint num_events_in_wait_list, 
    const cl_event* event_wait_list, 
    ...) 
+2

有什麼性能的原因,你不想使用VECTOR_CLASS,還是隻是個人喜好? – KLee1

+0

在一個大小爲1的向量中包裝每一個'cl :: Event'似乎都是多餘的。 –

+1

就我所知,這是唯一的方法。但是,讀取矢量的第一個值和讀取單個值一樣有效。 – DarkZeros

回答

2

也許你可以只執行event.wait()然後排隊另一個事件。見this link

+1

我認爲最初的Robert的問題是關於如何在** enqueueReadBuffer **中通過事件而不是事件向量,而不是如何等待單個事件。我認爲你必須使用vector :-( – alariq