cuda三重循环

xuboamei 2010-01-28 07:25:27
我遇到这样一个问题

int p =0;
for(int i=min_cell.x;i<=max_cell.x;i++)
{
for(int j=min_cell.z;j<=max_cell.z;j++)
{
for(int k=min_cell.z;k<=max_cell.z;k++)
{
p++;
}
}
}

p的结果为0,结果应该不为0,是什么问题?

int p =0;
for(int i=min_cell.x;i<=max_cell.x;i++)
{
for(int j=min_cell.z;j<=max_cell.z;j++)
{
//for(int k=min_cell.z;k<=max_cell.z;k++)
//{
p++;
//}
}
}



int p =0;
for(int i=min_cell.x;i<=max_cell.x;i++)
{
//for(int j=min_cell.z;j<=max_cell.z;j++)
//{
for(int k=min_cell.z;k<=max_cell.z;k++)
{
p++;
}
//}
}

上两个结果都正确,在线等,请高手不吝赐教
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuboamei 2010-01-28
  • 打赏
  • 举报
回复
不好意思,是我的问题,cuda 同步error
xuboamei 2010-01-28
  • 打赏
  • 举报
回复

int p =0;
for(int i=min_cell.x;i<=max_cell.x;i++)
{
for(int j=min_cell.z;j<=max_cell.z;j++)
{
for(int k=min_cell.z;k<=10000;k++)
{
p++;
}
}
}

p依然为0


int p =0;
for(int i=min_cell.x;i<=max_cell.x;i++)
{
for(int j=min_cell.z;j<=max_cell.z;j++)
{
for(int k=0;k<=10000;k++)
{
p++;
}
}
}


这样p又能算出来

不会溢出的,感觉像没算第三重循环
  • 打赏
  • 举报
回复
lz试试

long long p;

循环

printf("%lld\n",p);
  • 打赏
  • 举报
回复
也许三个区间的乘积恰好是2^32。结果溢出变成负数,又重新加回来了,就变成0了。
xuboamei 2010-01-28
  • 打赏
  • 举报
回复
已经证实
min_cell.x <= max_cell.x
min_cell.y <= max_cell.y
min_cell.z <= max_cell.z
  • 打赏
  • 举报
回复
min_cell和max_cell的x,y,z各是多少?

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧