在Qt/C++程序中使用OpenMP

using OpenMP in a Qt/C++ program

本文关键字:OpenMP 程序 Qt C++      更新时间:2023-10-16

我想用OpenMP并行化Qt/C++程序,这样我就可以与Qt线程工具进行比较。我有一些问题。

  1. 我必须在代码和项目文件中包含哪些内容才能使 OpenMP 正常工作?

  2. 在可交付的软件项目中使用 OpenMP 会很痛苦吗?每个版本是否应该包括 OpenMP 的更新和大量维护?

  3. 您对 OpenMP 的性能有何体验?

  4. 使用 OpenMP 的嵌套并行工作值得信赖吗?

  5. OpenMP 是否在与 Qt 相同的平台上受支持?

任何参考资料将不胜感激。多谢!

  1. 我必须在代码和项目文件中包含哪些内容才能使 OpenMP 正常工作?

    您必须在代码中引入 OpenMP 编译指示,并可能链接到 OpenMP 运行时库(这将在构建系统中引入有限的更改)。

  2. 在可交付的软件项目中使用 OpenMP 会很痛苦吗?每个版本是否应该包括 OpenMP 的更新和大量维护?

    我不确定你说的"痛苦"是什么意思。我知道很多项目都成功地使用了OpenMP。可能不时需要一些维护(但我想Qt也是如此)。

  3. 您对 OpenMP 的性能有何体验?

    多或少对任何好的基于线程的并行化工具都应该有期望。如果工作负载足够繁重,OpenMP 本身不应为您的代码增加太多开销,并且阿姆达尔定律将是您的极限。

  4. 使用 OpenMP 的嵌套并行工作值得信赖吗?

    是的

  5. OpenMP 是否在与 Qt 相同的平台上受支持?

    与Qt这个框架不同,OpenMP支持主要由编译器完成。您可能会发现Qt可编译的平台,但C++编译器不支持OpenMP。当然,这取决于您针对的平台类型。