我有幾個查詢,我需要一些說明..很抱歉,如果他們似乎是非常基本的。啓動內核後在主機上的執行流程
當我們開始使用clEnqueueNDRangeKernel內核中,究竟發生了主機代碼,它等待內核完成或..?
假設我們有多個內核,在這種情況下會發生什麼?這是否會發生,如果其中一個內核已經完成,主機是否可以從該內核檢索結果,而其他人仍在進行計算。
我正在閱讀clCreateBuffer的OpenCL規範(link here)。檢查標誌CL_MEM_USE_HOST_PTR的描述。爲了您的方便,我在此發佈了它: 「它表示應用程序希望OpenCL實現使用host_ptr引用的內存作爲內存對象的存儲位。」
我不能得到究竟他們所說的「應用」和「OpenCL實現」。此外,它還表示「允許OpenCL實現緩存緩衝區內容。」
對於點2:爲了保證執行,除非使用CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE創建命令隊列。 – 2012-07-12 16:01:10
好的,謝謝。所以如果我在NDRangeKernel之後有一個clEnqueueReadBuffer,並且沒有給出任何等待事件的信息。進一步,clEnqueueReadBuffer也是異步的,即不等待指定的事件。因此,在這種情況下,clEnqueueReadBuffer將如何執行......它是否開始逐步讀取數據,即它讀取已由內核處理的數據,並繼續進行類似的讀取操作,以便處理更多數據並使內核可用。 .. ?? – Nike 2012-07-12 16:39:58
對於第二點:什麼足以讓所有的內核同時啓動,只有單獨的命令隊列或所有的上下文,程序..等必須分開爲每個內核? – Nike 2012-07-12 16:43:59