我一直認爲分支分歧只是由分支代碼引起的,比如「if」,「else」,「for」,「switch」等。但是我最近讀過一篇論文,其中說:在CUDA中,非合併內存訪問是否會導致分支分歧?
「 可以清楚地觀察到由線程中的每個第一次探索基於算法採取的不同分支的數量至少比全勘探戰略兩次更重要。這通常是由額外的非合併訪問的結果全局存儲器。因此,這樣的螺紋發散導致許多存儲器訪問必須被序列化,增加的執行的指令的總數量。
可以觀察到經序列化的使用未合併訪問的版本號是乘七十六歲之間比其對手更重要。事實上,造成未合併的一個線程訪問的分歧導致許多存儲器訪問必須被序列化,以增加執行的指令。 「
看起來,據筆者,未合併的訪問可能會導致不同的分支。是真的嗎? 我的問題是,有多少原因究竟是那裏的分公司分歧?提前 感謝。
您能鏈接到原始參考? – talonmies
+1我真的很想知道內存訪問策略如何爲分歧分支負責。請添加參考。 –
本論文應爲參考。 2個paragraghes分別來自p80和p107。 http://mistic.heig-vd.ch/luong/thesis.pdf – kangshiyin