3

我想逐个像素地迭代图像并每个像素执行 1000 次浮点运算。您认为我应该为此使用多线程还是多处理,即 boost::thread 或 OpenMP?是否有经验可以在这两个之间进行选择(以获得最快的速度)?我知道创建线程或在线程之间切换比创建/切换进程快几倍。另一方面,实现 OpenMP 代码要容易得多。

我现在的解决方案:

#pragma omp parallel for
for(size_t i=0; i<640; ++i) {
    for(size_t j=0; j<480; ++j) {
        // do 1000 float operations
    }
} 
4

1 回答 1

3

OpenMP 对此绰绰有余,实际上 boost 甚至没有内置的并行循环结构。

你认为我应该使用多线程还是多处理

尽管 OpenMP 代表 Open MultiProcessing,但它实际上是一个多线程库。

另一个值得一看的库是 Intel TBB。

于 2013-01-08T14:00:01.717 回答