2011-07-06 188 views
1

我可以發現,對於「全局」內存訪問,線程所需的內存地址的合併(鄰近)是最佳事務的關鍵,而在「共享」內存中,發出的地址沒有衝突通過線程是關鍵。我理解得好嗎?共享和全局內存訪問

+0

是的。煤碳內存訪問對於有效的全局內存訪問至關重要,避免銀行衝突對高效的共享內存訪問非常重要。 –

回答

1

從NVIDIA CUDA編程指南:

爲了最大限度地提高全局內存吞吐量,最大限度地 通過合併是非常重要的:

  • 繼基於節最優化的訪問模式G.3.2和G.4.2,
  • 使用符合 第5.3.2.1.1節中詳述的大小和對齊要求的數據類型,
  • 在某些情況下填充數據,例如,在訪問第5.3.2.1.2節中描述的二維 數組時。

這是關係到存儲器的訪問,其聚結「填充」爲一個或多個交易中的翹曲的線程。對於計算能力2.x的設備,此問題已放寬。

另一方面,對於共享內存訪問,您需要了解如何實現此內存。

爲了實現高帶寬,共享內存被分成大小相同的內存模塊,稱爲bank,可以同時訪問。

如果兩個或多個線程訪問同一個銀行,則傳輸被序列化,也就是銀行衝突。

附錄G.計算能力有關於架構的更多信息。

問候!

+0

@BehzadX順便說一句,您理解得很好;) – pQB

+0

感謝您的詳細回覆。 – BehzadX

+2

不要忘記將其標記爲已接受的答案! – jmsu