2011-10-16 9 views
2

時enqueueNDRangeKernel被一再呼籲應該叫什麼其他的OpenCL功能?重複enqueueNDRangeKernel的通話OpenCL中

我一直沒能找到一個教程,顯示以這種方式使用enqueueNDRangeKernel和我的編碼嘗試不幸導致未處理的異常錯誤。以前也有類似的問題,但答覆似乎並不適用於我的情況。

我現在有一個循環,我稱之爲的OpenCL功能,按以下順序:

  1. setArg
  2. enqueueNDRangeKernel
  3. enqueueMapBuffer
  4. enqueueUnmapMemObject

我打電話setArg因爲在每次調用enqueueNDRangeKernel之前,內核的輸入都會發生變化。我調用enqueueMapBuffer和enqueueUnmapMemObject,因爲內核的輸出在主機代碼中使用。內核第一次運行正常(輸出是正確的),但在循環的第二遍期間,調用enqueueMapBuffer時出現未處理的異常錯誤。

我使用以下設置:

  1. 英特爾OpenCL的SDK與CL_DEVICE_TYPE_CPU(英特爾i7處理器上)
  2. 的Visual Studio 2010 IDE在Windows 7
  3. 主機代碼是用C++與OpenCL C++綁定。

謝謝。

回答

1

問題就迎刃而解了......事實證明,我是用的OpenCL函數調用的正確順序。我的內核出現了一個問題,在循環的第一次迭代之後纔出現。

0

我試圖做同樣的事情,你,但我停留在一個點上。我設法讓OpenCL的程序和內核,這兩個工作,但是當我嘗試循環幾次,它創建一個分配設備的工作原理,只有當i循環整個代碼的dealloc所有MEM _...