vs2010+openMP时,debug模式下处理结果不正常,release模式结果又正常

yuanwcj 2015-09-15 04:40:47
4核8线程的cpu,我想使用分段的方式分别计算每一段的平方和,将处理结果存储到已开辟的指针数组中
为了保证每个线程都有独立的处理结果,使用了private(tSum)
从处理结果看,release版本和串行运算的结果相同,但是debug版本的处理结果完全随机,请教各位大侠

#pragma omp parallel for  private(tSum) num_threads(8)//reduction(+:tSum)
for (int tIndex=0;tIndex<8;tIndex++)
{
tSum=0;
for(int nIndex=0;nIndex<nDif;nIndex++)
{
nShort1=*(pRcvShort+tIndex*nDif+nIndex);
tSum+=nShort1*nShort1;
}
*(pSum2+tIndex)=tSum;

// printf("tIndex=%2d,tSum=%20ul,thread=%d\n",tIndex,tSum,omp_get_thread_num());
}
...全文
224 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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