我已经从互联网上阅读了文档和论坛。许多人说,如果进程数是4,那么它将被分配给每个核心,这意味着一个核心只有一个进程要运行。然后我尝试在单个PC和两个PC环境中运行4个进程的程序。我得到的结果是两台PC比一台PC快。这两种环境都只使用4个核心,但为什么两台PC更快?
答案 0 :(得分:0)
这有很多变数,你没有给我们提供太多信息。这两台电脑是如何联系起来的?他们的硬件规格是什么?除了运行你的程序,他们还忙吗?你的计划做了多少工作?它需要大量的CPU电源/内存/磁盘访问吗?进程之间是否有很多同步?名单还在继续。
一种可能的情况是:您的一台PC有4个内核,但这些内核中至少有一个正在忙于运行操作系统和其他程序。所以你只有3个,也许是3个半核心专门用于你的程序,这意味着你的一个进程经常被饿死,并可能减慢其他进程。虽然2台PC之间有4个完全空闲的内核,但即使有网络通信的开销,它们也能更快完成。
答案 1 :(得分:0)
另外几个可能的情景:
1)主存储器数据速率是有限的。 如果每个节点使用4个MPI进程,则内存数据速率可能会成为瓶颈。
2)您确定您的PC有4个核心吗?很多英特尔处理器都使用hyper threading技术。所以也许你有4个虚拟核心,只有2个真核心。要查看它,请查看http://ark.intel.com处的CPU规格。