在我的cuda代碼中,如果我增加blocksizeX,blocksizeY它實際上需要更多時間[因此,我以1x1運行它]另外還有一大塊執行時間(例如,9箇中的7個s)只是通過調用內核來實現的。事實上,我很驚訝即使我將整個內核註釋掉,時間也幾乎是一樣的。有什麼建議在哪裏以及如何進行優化?增加塊大小會降低性能
P.S.我已經用我的實際代碼編輯了這篇文章。我對圖像進行了下采樣,因此每4個相鄰像素(例如,對於例如1,2行和1,2行)給出一個輸出像素。我得到一個有效的bw。 5GB/s,理論最大值爲86.4 GB/s。我使用的時間是在調用內核和指令並調用一個空內核方面的差異。 我現在看起來很糟糕,但我無法弄清楚我做錯了什麼。
__global__ void streamkernel(int *r_d,int *g_d,int *b_d,int height ,int width,int *f_r,int *f_g,int *f_b){
int id=blockIdx.x * blockDim.x*blockDim.y+ threadIdx.y*blockDim.x+threadIdx.x+blockIdx.y*gridDim.x*blockDim.x*blockDim.y;
int number=2*(id%(width/2))+(id/(width/2))*width*2;
if (id<height*width/4)
{
f_r[id]=(r_d[number]+r_d[number+1];+r_d[number+width];+r_d[number+width+1];)/4;
f_g[id]=(g_d[number]+g_d[number+1]+g_d[number+width]+g_d[number+width+1])/4;
f_b[id]=(g_d[number]+g_d[number+1]+g_d[number+width]+g_d[number+width+1];)/4;
}
}
謝謝!但我做了谷歌,並做了一些功課,然後發佈在堆棧溢出。 – Manish 2011-02-19 06:41:07
@Nick:[LMGTFY網址不允許出於某種原因](http://meta.stackexchange.com/questions/15650/ban-lmgtfy-let-me-google-that-for-you-links)。你會知道,如果你沒有試圖用tinyurl來混淆它,這也是*強烈不鼓勵。我喜歡知道我被鏈接到哪裏。 – 2011-02-19 07:02:53
@Manish - 我想幫助你,但是你對前面提到的關於cuda的兩個問題沒有選擇正確的答案。如果你給我們更多的激勵,這將有所幫助。 – jmilloy 2011-02-19 07:38:11