Coalesced memory access

Hey!

If all threads of a half warp access the same data word in global memory, is it coelesced or not? If not, how many data transfers required now? 16, one for each thread?

I must know it, for compute capability 1.3

Thanks

I think that only one transaction is done.

from programming guide 2.3, section 5.1.2.1,

the following protocol is used to issue a memory transaction for a half-warp:

1. Find the memory segment that contains the address requested by the lowest

   numbered active thread. Segment size is 32 bytes for 1-byte data, 64 bytes for

   2-byte data, 128 bytes for 4-, 8- and 16-byte data.

2. Find all other active threads whose requested address lies in the same segment.

   Reduce the transaction size, if possible:

   - If the transaction size is 128 bytes and only the lower or upper half is used,

	   reduce the transaction size to 64 bytes;

   - If the transaction size is 64 bytes and only the lower or upper half is used,

	 reduce the transaction sizez to 32 bytes.

3. Carry out the transaction and mark the serviced threads as inactive.

4. Repeat until all threads in the half-warp are serviced

If possible then try to use shared memory.