我想用 OpenMP 并行化一个 Qt/C++ 程序,所以我可以与 Qt 线程工具进行比较。我有一些疑问。
为了让 OpenMP 正常工作,我必须在代码和项目文件中包含哪些内容?
在可交付的软件项目中使用 OpenMP 会很痛苦吗?每个版本都应该包括 OpenMP 更新和大量维护吗?
您对 OpenMP 的性能有何感受?
OpenMP 的嵌套并行工作是否值得信赖?
与 Qt 相同的平台是否支持 OpenMP?
任何参考将不胜感激。非常感谢!
我想用 OpenMP 并行化一个 Qt/C++ 程序,所以我可以与 Qt 线程工具进行比较。我有一些疑问。
为了让 OpenMP 正常工作,我必须在代码和项目文件中包含哪些内容?
在可交付的软件项目中使用 OpenMP 会很痛苦吗?每个版本都应该包括 OpenMP 更新和大量维护吗?
您对 OpenMP 的性能有何感受?
OpenMP 的嵌套并行工作是否值得信赖?
与 Qt 相同的平台是否支持 OpenMP?
任何参考将不胜感激。非常感谢!
为了让 OpenMP 正常工作,我必须在代码和项目文件中包含哪些内容?
您必须在代码中引入 OpenMP 编译指示,并可能链接到 OpenMP 运行时库(这将在您的构建系统中引入有限的更改)。
在可交付的软件项目中使用 OpenMP 会很痛苦吗?每个版本都应该包括 OpenMP 更新和大量维护吗?
我不确定你所说的“痛苦”是什么意思。我知道很多使用 OpenMP 成功的项目。可能不时需要一些维护(但我想这对于 Qt 也是如此)。
您对 OpenMP 的性能有何感受?
或多或少应该期望任何好的基于线程的并行化工具。如果工作量足够大,OpenMP 本身不应该给您的代码增加太多开销,而阿姆达尔定律将是您的限制。
OpenMP 的嵌套并行工作是否值得信赖?
是的
与 Qt 相同的平台是否支持 OpenMP?
与作为框架的 Qt 不同,OpenMP 支持主要由编译器完成。您可能会发现可以编译 Qt 的平台,但 C++ 编译器不支持 OpenMP。当然,这取决于您所针对的平台类型。