关于使用OpenMP需要做多少工作才有意义
On what amount of work does using OpenMP start making sense?
我最近开始研究使用OpenMP的并行化,并发现了大量描述如何使用它的优秀资源。但是,我无法找到关于并行化何时开始有意义的文档,或者换句话说:并行化开始补偿OpenMP线程创建开销的转折点在哪里,以及在什么情况下不使用它会更好?功有多复杂才有意义把它并行化?
有相关的文档或指南吗?
根据我自己的经验,如果您的计算非常适合并行化,那么如果串行计算(例如您想并行化的循环)花费几毫秒,则可以期望获得可观的收益。在1毫秒以下,由于涉及到开销,它将无助于使用多个线程。
图像处理就是一个很好的例子。我在两个连续的图像上运行筛选和冲浪时使用它。我发现如果你需要做大量的数学计算,特别是在矩阵上,它很有用。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 复制列表初始化的隐式转换的等级是多少
- 导入库可以跨dll版本工作吗
- while循环中while循环的时间复杂度是多少
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- 如何检查一个c++字符串中有多少相同的字符/数字
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- C++有多少类型的循环
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 我如何知道在 OpenMP 中"为指令"完成了多少工作?
- 我的类的构造函数应该执行多少工作
- 关于使用OpenMP需要做多少工作才有意义