P 47 of the programming guide states the following:
Contrary to what is quoted above, to my understanding, second example will NOT create a kind of bank conflict, which can be avoided with the proper memory alignment.
There will be bank conflicts in the second case. Consider 16 threads accessing the first field of an array of the 2-element float structures. Starting with 0, the byte adresses accessed will be:
0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 102, 120.
Accesses that will cause conflicts since they belong to the same bank: 0 and 64, 8 and 72, …