运行并行程序时硬件上会发生什么

时间:2013-08-04 13:29:20

标签: multithreading process parallel-processing openmp core

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

1 个答案:

答案 0 :(得分:0)

几乎不可能在SO“答案”的范围内回答您的问题 - 如果您想要“真实”的答案,您需要阅读有关机器特定架构的并行处理的实现。简短的回答是“它取决于”。但是你的程序可以在两个处理器上,四个内核中的任何一个或全部上运行;他们在这里理解的关键是你可以在一定程度上控制你的程序结构,但OMP的优点是通常“你不应该关心”。如果线程同时运行,它们通常会获得一个核心;但是如果他们需要访问相同的内存空间可能会减慢速度,因为“短期数据”喜欢生活在处理器(核心)缓存中,这意味着有很多混洗数据在继续。如果不同的线程不必共享内存,则可以获得最大的性能提升。