我在HPC集群上运行了不同cpu数量的相同c++问题大小,但我发现当cpu数量增加时,执行时间也会增加。我原以为执行时间会大大减少。有人能解释一下这个问题吗?
下面是每#个cpu的执行时间
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
我的想法:
- cpu之间通信增加过多,导致执行时间增加。
希望这说明了问题:
有两个主要因素影响性能:cpu本身的速度和对内存y的访问的速度。在集群中,很明显,给定的CPU对同一计算机(节点)内的RAM的访问速度最快。也许更令人惊讶的是,由于主存和缓存的速度不同,在典型的多核笔记本电脑上也存在类似的问题。因此,一个好的多处理环境应该允许特定CPU控制一块内存的"所有权"。