我有一個10行96列的2D主機陣列。我將這個數組以線性方式加載到我的cuda設備全局內存中,即row1,row2,row3 ... row10。CUDA 5.0內存對齊和合並訪問
該數組的類型爲float。在我的內核中,每個線程都從設備全局內存訪問一個浮點值。
The BLOCK_SIZE I use is = 96
The GRID_DIM I use is = 10
現在我從「CUDA C語言編程指南」爲凝聚的訪問理解,我使用的模式是正確的,由經連續訪問存儲位置。但是有一條關於內存128字節內存對齊的條款。我無法理解。
Q1)128字節內存對齊;這是否意味着warp中的每個線程都應該從地址0x00(例如)開始訪問4個字節,直到0x80? Q2)因此,在這種情況下,我是否會進行不合並的訪問或不合並?
我的理解是:一個線程應該使一個內存訪問應該是4個字節,地址範圍從0x00到0x80。如果來自變形的線程訪問其外部的位置,則它是未合併的訪問。
謝謝@Jeffrey。它澄清了我所有的疑問。 – fahad