親愛DOWNVOTERS:請讓我知道下投票的原因。我已經接受了一個答案,這意味着這個人能夠理解這個問題,並且不需要一個最低限度的工作示例。其次,我想這是一個概念性問題,而不是一個家庭作業的問題。請讓我知道你的倒票的原因。決定CUDA線程和塊圖像處理
重要:我已經看過幾個線程(例如this)關於線程和塊的分佈,但我有一個特定的查詢。
我在GPU來處理unsigned char
形式的圖像數據。我的圖像是大小(1080 x 1920)
用3個信道,並且每個像素是unsigned char
類型。
GPU Details:
NVIDIA Quadro k2000
2 GB of GDDR5 GPU memory
384 5MX CUDA parallel processing cores
正如,我是新來的GPU處理,我不能夠太瞭解每塊塊狀分佈的總數量的線程數目爲我的GPU卡這個具體情況。
問題:當我使用下面的 配置我(1080 x 1920)
圖像調用GPU內核的話,我得到了想要的結果,但計算時間實在是太多了
dim3 numOfBlocks((108) , (192));
dim3 numOfThreadsPerBlocks(3*10 , 3*10); //multiplied by 3 because we have 3 channel image now
colorTransformation_kernel<<<numOfBlocks, numOfThreadsPerBlocks>>>(numChannels, step_size, iw, ih, dev_ptr_source, dev_ptr_dst);
但,如果我選擇了以下另一種配置
dim3 numOfBlocks((108/2) , (192/2));
dim3 numOfThreadsPerBlocks(3*10*2 , 3*10*2); //multiplied by 3 because we have 3 channel image now
然後,我得到一個空白圖像。
做你該做[錯誤檢查](http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the-cuda-runtime-api/14038590#14038590)?請發表[最小,完整的,並且可驗證示例](http://stackoverflow.com/help/mcve) –
@ M.S。 :沒有錯誤。請告訴我,最小的工作示例是什麼?這不是一個合乎邏輯的問題嗎?我提供了我的圖像,GPU,numBlocks,還需要什麼所有的細節。請讓我知道需要其他信息,我會發布它。 – skm
你怎麼知道沒有錯誤?如果你得到一個空白圖像,你的內核可能沒有運行,這是你可以通過檢查CUDA API錯誤檢測。甲MCVE通常由可以複製,粘貼,並編譯沒有任何必要的改變重現該問題的代碼。 –