0

例如,一台机器有两个处理器,每个处理器有两个内核。我使用 OpenMP 编写了一个并行程序并使用 3 个线程运行它。硬件上会发生什么?我认为只有一个处理器会处理该程序(对吗?),但我无法想象三个线程是如何分配到两个内核的。请帮忙。谢谢。

4

1 回答 1

0

在 SO“答案”的范围内回答您的问题几乎是不可能的 - 如果您想要“真正的”答案,您需要阅读有关您机器特定架构的并行处理的实现。简短的回答是“这取决于”。但是您的程序可以在两个处理器上运行,也可以在四个内核中的任何一个或所有内核上运行;他们在这里理解的关键是您可以通过程序的结构在某种程度上控制它,但是 OMP 的巧妙之处在于通常“您不应该关心”。如果线程同时运行,它们通常会各自获得一个核心;但是如果他们需要访问相同的内存空间,这可能会减慢您的速度,因为“短期数据”喜欢存在于处理器(核心)的缓存中,这意味着正在进行大量的洗牌数据。

于 2013-08-04T13:36:12.157 回答