2

我可以在具有单核 cpu 的机器上使用 OpenMP 吗?性能会有一些提升吗?

4

2 回答 2

2

是的你可以。您可以使用 OpenMP 指令对代码进行注释,并且仍然按顺序运行应用程序。为此,您必须在没有 OpenMP 标志 ( e.g., -fopenmp) 的情况下编译和运行应用程序。

您可以在单核上使用 OpenMP,并且仍然可以通过例如在具有超线程的单核 CPU 中运行多线程程序来提高性能。

有一些内存绑定算法可以利用超线程,因为在执行期间,一些线程仍将等待获取内存,而其他线程将进行计算。在极少数情况下,超线程的收益可能来自分支预测的改进。

然而,由于 OpenMP 指令固有的开销,大多数情况下,即使使用单线程,使用单核 OpenMP 也会减慢应用程序的速度。此外,线程也在“争夺”相同的资源。

于 2012-11-07T23:05:03.883 回答
1

您可能会在程序同时具有 I/O 绑定和 CPU 绑定部分的情况下获得优势……如果线程“1”是 I/O 绑定的,那么线程“2”可以执行其 CPU 绑定的事情。如果这会变得更加明显该程序的部分执行在 I/O 上非常繁重

于 2018-02-12T18:12:59.683 回答