580
社区成员
发帖
与我相关
我的任务
分享
__global__ void atomaddTest(int * resultofadd,int3 *pos)
{
int i= threadIdx.x;
int j= blockIdx.x;
int k= blockIdx.y;
if (i<8&&i>5)
{
pos[*resultofadd].x=i;
pos[*resultofadd].y=j;
pos[*resultofadd].z=k;
atomicAdd(resultofadd,1);
}
}
int main()
{
int *addres =(int*)malloc(1*sizeof(int));
int3 *Pos=(int3*)malloc(256*256*256*sizeof(int3));
cudaStatus=cudaMalloc((void**)&dev_addres,1*sizeof(int));
cudaStatus=cudaMalloc((void**)&dev_Pos,256*256*256*sizeof(int3));
cudaMemset(dev_addres,0,1*sizeof(int));
atomaddTest<<<grid,256>>>(dev_addres,dev_Pos);
cudaStatus=cudaMemcpy(addres,dev_addres,1*sizeof(int),cudaMemcpyDeviceToHost);
cudaStatus=cudaMemcpy(Pos,dev_Pos,256*256*256*sizeof(int3),cudaMemcpyDeviceToHost);
}