Hi I have a weired problem accessing data accurately from shared memory on kernel.
Basically I have a data array(A[500]) in shared memory, if I copy them to another array B[500] and move it back to host side for print, it looks exactly what I expect to see.
shared char A[500];
for (int i=0; i<500; i++)
B[i]=A[i];
But if I further randomly pick up some data from the array A[500] after the above copy like below
shared char A[500];
for (int i=0; i<500; i++)
B[i]=A[i]
B[500]=A[38];
B[501]=A[179];
B[502]=A[444];
B[503]=A[321];
…
When I move B to the host side and print everything out, B[0]~B[499] are always correct, but the data after that(B[500]~B[503]) are partly correctly and partly just 0…So weired, Is that the problem of possible bank conflict? synchronize seems not that helpful to this problem. Any idea?
Thanks.