Причина, почему я спрашиваю это потому, что есть какая-то странная ошибка в моем коде, и я подозреваю, что это может быть какой-то алиасинг проблема:Поддерживает ли CUDA указатель-сглаживание?
__shared__ float x[32];
__shared__ unsigned int xsum[32];
int idx=threadIdx.x;
unsigned char * xchar=(unsigned char *)x;
//...do something
if (threadIdx.x<32)
{
xchar[4*idx]&=somestring[0];
xchar[4*idx+1]&=somestring[1];
xchar[4*idx+2]&=somestring[2];
xchar[4*idx+3]&=somestring[3];
xsum[idx]+=*((unsigned int *)(x+idx));//<-Looks like the compiler sometimes fail to recongize this as the aliasing of xchar;
};
Почему вы не ставите '__shared__' перед' unsigned char * xchar'? То же самое для '(unsigned int *) x'. – thejh
@thejh Мне нужно сделать это здесь? – user0002128
Не уверен, но я так думаю. Вы можете попробовать, может ли это сделать ваш код ... – thejh