鑑於OpenCL旨在成爲異構編程的API,幾乎定義它具有與其相關的巨大延遲懲罰。因此必須有一個異步API。異步API
但是我發現很難在OpenCL.net中找到異步API。我找到了OpenCl.Net.Event
結構,在大多數API調用中這似乎是一個out
參數。不過,我無法找到關聯該事件的回調,因爲opencl.net
似乎缺少clSetEventCallback
。
有沒有人知道如何在opencl.net
的await
異步操作?
編輯:我討厭人們downvote沒有至少發表評論。對於這個記錄,我已經圍繞這個主題搜索了很多內容,目前我正在讀一本關於OpenCL的書,甚至將源代碼下載到OpenCL.net項目中也無濟於事。 OpenCL.net上有很少的文檔。
你是什麼意思等待時間?是否在等待結果時函數調用阻塞的時間? – Eric 2014-11-04 07:19:40
例如在OpenCL中,您需要將數據加載到目標'設備'的內存中。這是通過排隊加載內存操作完成的。示例代碼展示瞭如何同步執行此操作(通過設置async false並忽略out事件對象)。從實現的角度來看,將數據加載到GPU上的速度「很慢」,因爲延遲很高(即使我們只考慮了GDDR5延遲)。當我們通過PCI-E總線進行數百次往返GPU時,我們失去了所有的性能提升。因此,我希望能夠排隊操作並通知完成。 – Aron 2014-11-04 07:26:11
我對openCl不是很熟悉,但不是我們正在談論的openCl的批處理?你想要的是花盡可能多的時間排隊數據,儘可能少的時間等待結果(或其他)是正確的? – Eric 2014-11-04 07:50:09