【发布时间】:2012-03-20 23:37:18
【问题描述】:
我正在尝试使用 openmp 并行化我的代码。除了一部分之外,我已经设法并行化了我的大部分代码。据我所知,以下部分不能并行化,但我想有不同的意见。任何建议,将不胜感激。如果可能的话,内部的 2 个 for 循环可以并行化,那就太好了。
for (o = 0; o < octaves; ++o)
for ( i = 0; i <= 1; ++i)
{
b = responseMap.at(filter_map[o][i]);
m = responseMap.at(filter_map[o][i+1]);
t = responseMap.at(filter_map[o][i+2]);
// loop over middle response layer at density of the most
// sparse layer (always top), to find maxima across scale and space
for ( r = 0; r < t->height; ++r)
{
for (c = 0; c < t->width; ++c)
{
if (isExtremum(r, c, t, m, b))
{
interpolateExtremum(r, c, t, m, b);
}
}
}
}
【问题讨论】:
-
你的算法的输出是什么?
o、i、r和c是循环的本地变量,b、m、t似乎也是临时变量。某处肯定有一些副作用,否则我看不出这样的算法如何产生有用的东西...... -
“据我所知,以下部分无法并行化”:为什么?而 interpolateExtremum() 是做什么的,它会影响下一次循环迭代吗?
标签: c++ multithreading openmp