请问大家,我写的核函数的线程分配如下:
if ( tid == 499 )
{
ei[tid] = sin( OMIGA * i ); (1)
}
else
{
if ( tid != IncidentEnd )
{
hi[tid] = hi[tid] - 0.5*( ei[tid+1] - ei[tid]); (2)
__syncthreads();
}
if ((tid != IncidentStart) && (tid != IncidentEnd) )
{
ei[tid] = ei[tid] - 0.5*( hi[tid] - hi[tid-1]); (3)
__syncthreads();
}
一共用了1000个线程。作用是:在线程tie=499处设了一个源(1)处,(2)(3)两行代码是计算tid索引的数据的迭代关系。但结果很奇特!前499个线程(0——498),计算出来的数据完全正确,但是后面的500个线程(500——999)计算结果全是零,这是为什么呢? 我觉得(2)(3)的计算对线程来说是对称的啊, 为什么前面能出结果,而后面的全是零啊? 线程数据输出图见附件。 谢谢!