2012-11-27 124 views
2

我正在做一個家庭作業項目,比較CPU和GPU上的快速傅立葉變換的性能。我完成了CPU部分,但與GPU,我有一個問題。OpenCL中FFT 2D內核運行時= 0

麻煩的是內核運行時爲零,輸入與輸出圖像相同。我在win7上使用VS2010和AMD APP SDK。這裏是主機codethe kernel,加法header處理image,他們可以在OpenCL的編程書籍中找到(良土山...)

我的猜測錯誤是在我們傳遞值相從圖像像素到cl_float2 *xm(主機代碼中的第169-174行)。我無法訪問矢量組件來檢查它,編譯器不接受.sX.xy,會引發錯誤。其他部分 - 內核,頭... - 在我看來很好。

for (i=0; i < n; i++) { 
    for (j=0; j < n; j++) { 
     ((float*)xm)[(2*n*j)+2*i+0] = (float)ipgm.buf[n*j+i]; //real 
     ((float*)xm)[(2*n*j)+2*i+1] = (float)0; //imag 
    } 
} 

所以,希望你們幫助我。任何想法將不勝感激。

+1

請將您的問題中的所有相關代碼(當然不會超過)。如果你至少不能把你的代碼格式化爲可讀性,那麼因爲閱讀一大堆縮進代碼並不是我們許多人喜歡的東西。 – Grizzly

+0

哦;對不起 。我使用Opera作爲主要瀏覽器,似乎它不是保持代碼的格式:( – Tiana987642

回答

3

OpenCL提供了很多不同的錯誤代碼。
您已通過在每次通話中執行ret = clInstruction();來檢索它們,但您沒有分析它。

如果此值等於CL_SUCCESS,請檢查每次通話。
它可能總會發生,內存不足,硬件已被使用或源代碼中有一個簡單的錯誤。返回值會告訴你。

另外:請檢查您的cl_context,cl_programNULL值。

+0

感謝您的建議,我在它上面,似乎沒有加載內核 我會盡力解決它然後再回來查看更多的細節,所以我會在以後投票給你:) – Tiana987642

+0

好吧,我在內核中發現了一個錯字,爲什麼它不起作用。謝謝:D – Tiana987642

+0

我的榮幸! :)(PS:你的意思是在OpenCL代碼中?當我做'clCreateProgramWithSource()'怪異時,這樣的錯誤直接顯示在我的shell中。) – Nippey