使用OMP并行添加到for循环中的计数
我正在尝试通过平行的OMP加快处理加快处理
,但是每次CNT值都不同,由于某种原因,它并没有添加所有内容。谢谢。
RGBTRIPLE rgb;
COLORREF color;
int cnt = 0;
#pragma omp parallel for private(color, rgb) shared(cnt)
for(short ii=0;ii<cx;ii = ii + 1)
{
for(short j=0;j<cy;j = j + 1)
{
color = pDC->GetPixel(ii,j);
rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);
if(rgb.rgbtRed>0 && rgb.rgbtRed<255)
{
#pragma omp critical
cnt++;
//TRACE("color: %d,%d,%d\n",rgb.rgbtRed,rgb.rgbtGreen,rgb.rgbtBlue);
}
}
}
#pragma omp single
{}
CString msg; msg.Format("%d done",cnt);
AfxMessageBox(msg);
}
I'm trying to speed up some processing with OMP parallel
but the cnt value is different every time, it's not adding across all for some reason. thanks.
RGBTRIPLE rgb;
COLORREF color;
int cnt = 0;
#pragma omp parallel for private(color, rgb) shared(cnt)
for(short ii=0;ii<cx;ii = ii + 1)
{
for(short j=0;j<cy;j = j + 1)
{
color = pDC->GetPixel(ii,j);
rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);
if(rgb.rgbtRed>0 && rgb.rgbtRed<255)
{
#pragma omp critical
cnt++;
//TRACE("color: %d,%d,%d\n",rgb.rgbtRed,rgb.rgbtGreen,rgb.rgbtBlue);
}
}
}
#pragma omp single
{}
CString msg; msg.Format("%d done",cnt);
AfxMessageBox(msg);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论