核函数如下,这是一个交换数组中元素顺序的核函数,数组大概有一万多个元素。如果按下面的代码直接输出,结果是错的,但是如果我在
const int oldpos = sortpart[p];这句前加上printf来输出未改变顺序前的数组的值之后,下面输出结果只有一个是错的,其他都是对的,请问这是怎么回事啊
_global__ void KerSortBasicArrays(int a, int* sortpart, double3* totalCoorg, double3* totalCoor,int3*CCg,int3*cc)
{
const int p = blockIdx.x*blockDim.x + threadIdx.x; //-Particle number
if (p<a){
const int oldpos = sortpart[p];
totalCoor[p] = totalCoorg[oldpos];
cc[p] = CCg[oldpos];
Swap<double3>(totalCoorg[p], totalCoor[p]);
Swap<int3>(CCg[p], cc[p]);
if (p >= 3860 && p < 3870)
printf("totalCoor[%d]的值为 %lf ,%lf ,%lf \n", p, totalCoorg[p].x, totalCoorg[p].y, totalCoorg[p].z);
}
}