【发布时间】:2014-03-18 08:04:45
【问题描述】:
我正在编写一个图像处理过滤器,我想使用 openmp 加快计算速度。我的伪代码结构如下:
for(every pixel in the image){
//do some stuff here
for(any combination of parameters){
//do other stuff here and filter
}
}
代码使用不同的参数过滤每个像素,并选择最佳的。
我的问题是什么更快:并行化处理器之间的第一个循环,或者顺序访问像素并并行化不同的参数选择。
我认为这个问题可能是一个更笼统的问题:什么更快,给每个线程大量的操作,或者用很少的操作创建很多线程。
我现在不关心实现细节,我想我可以用我以前使用 openmp 的专业知识来处理它们。谢谢!
【问题讨论】:
-
“哪个更快?”的答案总是一样的。 两种方法都试一下,你就知道了。我们无法比您更好地看到未来。
-
感谢@EricLippert,这是有道理的。但是我的算法非常复杂,而且我处理的图像非常大,所以我认为提出我的具体问题,然后将其作为一个更“一般”的问题提出,对我来说可能会节省时间,对其他人有用
-
顺便说一下,如果你使用线程池和现有的线程,线程创建开销不会那么重要。如果您的程序通常已经是多线程程序,则应该是这种情况。
-
@Anthony:如果你真正的问题是复杂和困难的,那就更有理由期望互联网上的陌生人会猜错。
标签: c++ c multithreading parallel-processing openmp