我正在做一個家庭作業項目,比較CPU和GPU上的快速傅立葉變換的性能。我完成了CPU部分,但與GPU,我有一個問題。OpenCL中FFT 2D內核運行時= 0
麻煩的是內核運行時爲零,輸入與輸出圖像相同。我在win7上使用VS2010和AMD APP SDK。這裏是主機code,the 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
}
}
所以,希望你們幫助我。任何想法將不勝感激。
請將您的問題中的所有相關代碼(當然不會超過)。如果你至少不能把你的代碼格式化爲可讀性,那麼因爲閱讀一大堆縮進代碼並不是我們許多人喜歡的東西。 – Grizzly
哦;對不起 。我使用Opera作爲主要瀏覽器,似乎它不是保持代碼的格式:( – Tiana987642