我想逐个像素地迭代图像,并对每个像素执行 1000 次浮点运算。 你认为我应该为此使用多线程或多处理,即 boost::thread 还是 OpenMP?是否有在这 2 个之间进行选择的经验法则(以获得最快的速度)? 我了解到创建线程或在线程之间切换比创建/切换进程快数倍。另一方面,实现 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
}
}
最佳答案
OpenMP 对此绰绰有余,事实上 boost 甚至没有内置的并行循环结构。
Do you think I should use multi-threading or multiprocessing
虽然 OpenMP 表示 Open MultiProcessing,但它实际上是一个多线程库。
另一个值得关注的替代库是 Intel TBB。
关于c++ - 哪个库用于迭代 1M*1k 次的并行 for 循环,OpenMP 或 boost::thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216335/