我正在使用DirectCompute在GPU上執行通用計算。目前,我試圖在分辨率爲1920x1080的紋理上進行操作。我有一個Dispatch(2,1080,1)和numthreads(960,1,1),它們根據我的計算完全覆蓋每像素一個線程的圖像。GPU上的線程
現在,據我所知,所有的線程應該同時運行,對吧?但是,在我的代碼中,如果像素是黑色的,我不做任何計算。所以我注意到當我的大部分圖像是黑色時,性能都有了明顯的提高。但是,如果一個對象阻塞了屏幕,則性能會急劇下降。
我的問題是:如果所有線程並行運行,處理幀的速度將由最差的執行線程決定,實質上黑色像素上運行的線程將空閒,對不對?那麼爲什麼我會在處理更多像素時看到速度變慢呢?他們應該同時這樣做。或者我有這個錯誤?
任何幫助,將不勝感激。
我想這解釋了很多我想知道的。感謝您的回答。我將不得不對互聯網上的GPU線程做更多的研究。 – l3utterfly