-2

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

  1. 为了让 OpenMP 正常工作,我必须在代码和项目文件中包含哪些内容?

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

  3. 您对 OpenMP 的性能有何感受?

  4. OpenMP 的嵌套并行工作是否值得信赖?

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

任何参考将不胜感激。非常感谢!

4

1 回答 1

2
  1. 为了让 OpenMP 正常工作,我必须在代码和项目文件中包含哪些内容?

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

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

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

  3. 您对 OpenMP 的性能有何感受?

    或多或少应该期望任何好的基于线程的并行化工具。如果工作量足够大,OpenMP 本身不应该给您的代码增加太多开销,而阿姆达尔定律将是您的限制。

  4. OpenMP 的嵌套并行工作是否值得信赖?

    是的

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

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

于 2012-04-13T09:03:28.633 回答