2014-01-19 84 views
2

閱讀的話題之後,我有2個涉及全局內存問題凝聚訪問:內存合併和交易

1 - 我讀到了內存合併一個要求是由線程訪問的字必須是4,8 ,或16個字節,但顯然這隻對計算能力小於1.3的設備有效。是對的嗎?對於後一個設備(> = 1.3),一個線程甚至可以訪問一個或兩個字節並且成功地合併內存訪問

2-如果(半)翹曲全局內存訪問生成128字節而不是64字節內存事務,因爲字未對齊以及傳輸的額外數據如何,是否會被系統丟棄?

謝謝

+0

任何幫助在這裏.... – user2005893

回答

1

1)您可以訪問這些數據,你想在以後的設備的任何方式,但性能仍然是窮人,如果你請求一個數據段狹窄,即你將無法實現完整的記憶GPU的帶寬。

2)這又取決於你的代碼的整體方案。通常,CUDA後期版本的改進是不對齊的讀取/寫入不會導致糟糕的性能,但導致例如2個寫入命令是問題而不是一個。

想想它就像把人們放在公共汽車上。如果您可以將您的全部乘客安排到一輛僅有一個目的地的公交車上,那麼效率會比使用兩輛只有一半的公交車的效率更高。

所以是的,它很重要,但取決於你是內存還是計算綁定,它會有所不同。

安排您的讀/寫模式以利用全帶寬在許多應用程序中給了我最後20-30%的性能。

/亨裏克