即使CPU数量增加,执行时间也会增加,为什么? 我在HPC集群上运行了不同数量的CPU的相同C++问题大小,但是我发现,当CPU数量增加时,执行时间也增加了。我预计执行时间会显著减少。有人能解释一下这个问题吗

即使CPU数量增加,执行时间也会增加,为什么? 我在HPC集群上运行了不同数量的CPU的相同C++问题大小,但是我发现,当CPU数量增加时,执行时间也增加了。我预计执行时间会显著减少。有人能解释一下这个问题吗,c++,architecture,operating-system,cluster-computing,hpc,C++,Architecture,Operating System,Cluster Computing,Hpc,下面是我每台CPU的执行时间 我的想法: CPU之间的通信增加过多,导致执行时间增加 希望这能解释这一点: “影响性能的主要因素有两个:CPU本身的速度和对内存的访问速度。在集群中,相当明显的是,给定的CPU将以最快的速度访问同一台计算机(节点)内的RAM。”。也许更令人惊讶的是,由于主内存和缓存的速度不同,在典型的多核笔记本电脑上也存在类似的问题。因此,一个好的多处理环境应该允许特定CPU控制内存块的“所有权”。希望这能解释这一点: “影响性能的主要因素有两个:CPU本身的速度和对内存的访问

下面是我每台CPU的执行时间

我的想法:

  • CPU之间的通信增加过多,导致执行时间增加
    • 希望这能解释这一点:

      “影响性能的主要因素有两个:CPU本身的速度和对内存的访问速度。在集群中,相当明显的是,给定的CPU将以最快的速度访问同一台计算机(节点)内的RAM。”。也许更令人惊讶的是,由于主内存和缓存的速度不同,在典型的多核笔记本电脑上也存在类似的问题。因此,一个好的多处理环境应该允许特定CPU控制内存块的“所有权”。

      希望这能解释这一点:


      “影响性能的主要因素有两个:CPU本身的速度和对内存的访问速度。在集群中,相当明显的是,给定的CPU将以最快的速度访问同一台计算机(节点)内的RAM。”。也许更令人惊讶的是,由于主内存和缓存的速度不同,在典型的多核笔记本电脑上也存在类似的问题。因此,一个好的多处理环境应该允许特定CPU控制内存块的“所有权”。

      这可能有帮助吗。还看一下:你的C++代码是否并行?你是怎么提交的?也许这能帮上忙。还看一下:你的C++代码是否并行?如何提交?
        Number of CPUs      Problem size         Time (seconds)
        1                   3000000              15.48
        2                   3000000              18.2
        4                   3000000              21.73
        8                   3000000              40.55
        16                  3000000              60.14
        32                  3000000              98.75