2011-03-17 48 views
0

所有, 從「NVIDIA CUDA編程指南2.0」第5.1.2.1節: 「聚結上的設備與計算能力爲1.2和更高」CUDA:內存交易規模的計算能力爲1.2或更高版本

「尋找記憶該段包含最低編號的活動線程所請求的地址,對於8位數據,段大小爲32個字節,對於16位數據爲64個字節,對於32位,64位和128位數據,則​​爲128個字節。因爲每個half-warp有16個線程,如果所有的線程都訪問8-bit數據,那麼每個half-warp的總大小應該是16 * 8-bit = 128-bit = 16 bytes 。而「指南」說「8位數據的32字節」。似乎有一半帶寬被浪費了。我的理解是否正確?

感謝 Deryk

回答

2

是。內存訪問總是以32,64或128字節爲單位,而不管內存線實際需要多少。


更新:

問:那如何解釋16位數據的64個字節?

值:32字節1字節爲詞,對於2字節字128字節和用於更高字節字64字節是最大大小所訪問的節段的。例如,如果每個線程正在讀取2個字節的字並且訪問完全對齊,則內存訪問將減少爲,以便僅使用32字節的行提取。

查看「CUDA編程指南(v3.2)」中的第G.3.2.2節「計算能力的設備1.2和1.3」。我看你使用了CUDA PG 2.0版(可能CUDA 2.0編譯器)。自那以後,有很多改進(特別是:錯誤修復)。

+0

這怎麼解釋64位的16位數據? (16 * 16/8 = 32) – 2011-03-18 07:44:00