使用OpenCL C++ bindings(documentation),是否有可能排隊的命令只能等待一個cl::Event
?OpenCL 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 API(documentation)存在,在那裏你傳遞一個指針到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,
...)
有什麼性能的原因,你不想使用VECTOR_CLASS,還是隻是個人喜好? – KLee1
在一個大小爲1的向量中包裝每一個'cl :: Event'似乎都是多餘的。 –
就我所知,這是唯一的方法。但是,讀取矢量的第一個值和讀取單個值一樣有效。 – DarkZeros