- I have a global array called ‘array_global’ from which I load data into shared memory. The access pattern is as follows:
Threads (0,1,2,3,…,31) load data from array location (n,n+2,n+4,n+6,…,n+64)
“n” is that starting index corresponding to thread 0. Would this access pattern be coalesced? Would this access pattern be coalesced if it is inside a conditional statement which does not evaluate identically across all threads in the block? Are accesses inside conditional statements which do not evaluate identically across a block coalesced?
- I have another global array called ‘array_global2’ into which I transfer data from shared memory. The access pattern is more complicated and it also is inside a conditional statement which does not evaluate identically across the block . The access pattern is
Thread (0,1,2,3,…,31) each write to eight locations. The eight locations are
Thread 0 writes to (n , n+1, j , j+1, n+K , n+1+K, j+K, j+1+K) in array global
Thread 1 writes to (n+2, n+3, j+2, j+3, n+2+K, n+3+K, j+3+K,j+3+K) in array global
And so on up to thread 31. Are these accesses coalesced?