2014-03-04 35 views
0

我還沒有嘗試過,因爲我不知道如何實現這一點,並希望有一個想法,如果這是可能的。如何從全局內存或紋理內存中獲取16字節

我讀了關於int4類型,我想知道,因爲我的每個線程需要在tId(一個數組)的1字節內存上工作,然後在接下來的15個字節上工作,對我來說可能送int或INT4的陣列,以全局或紋理存儲器,例如這一個

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 

其中Thread0將隨後取字節0到15,線程1取字節1至字節16等一體,以減少全球數我正在做內存訪問,因爲此刻,我爲每個線程創建最多16個讀數到全局內存。

由於

回答

1

如果要取在單個事務中16個字節,所述數據必須是適當的矢量類型(例如int4float4等),並且它必須是自然對齊。這意味着,16字節向量類型的向量類型區域的開始必須從16字節的邊界開始。如果你的第一個線程正確地檢索了字節0-15,那麼第二個線程無法正確地檢索字節1-16(在單個事務中),因爲這不會自然對齊。下一個自然對齊的16字節插槽將是字節16-31。 int也必須被對準,所以你不能在字節1開始一個int,但在字節0,4,8等的節目指南的

This section,尤其是「尺寸和對齊要求」將解釋它也。