以下,我有做這些件代碼,用於在GPU處理的圖像的問題在過濾器工作的輸入:與該塊的輸出中的CUDA濾波器是下一個塊
for(int h=0; h<height; h++) {
for(int w=1; w<width; w++) {
image[h][w] = (1-a)*image[h][w] + a*image[h][w-1];
}
}
如果我定義:
爲dim3 threads_perblock(32,32)
然後每個塊我有:32個線程可被傳遞。該塊的線程無法與來自其他塊的線程進行通信。
在一個thread_block中,我可以使用shared_memory翻譯這些代碼段,但是,對於邊緣(我會說):image [0,31]和image [0,32]在不同的線程塊中。圖像[0,31]應該從圖像[0,32]中獲取值來計算其值。但他們在不同的線程塊。
這樣的問題。
我該如何解決這個問題?
在此先感謝。
您是否使用相同的緩衝區進行讀取和寫入?如果a = 1,那麼您正在將數據向右移動一列。那是你想要計算的嗎? – pQB
這是CPU中的示例代碼,讀寫應該在GPU中不同。對於等待很簡單,因爲它不再是並行通信,任何其他想法?提前致謝。 – olidev