即使cpu数量增加,执行时间也会增加,为什么?
Increased Execution TIme even with increased number of CPUs, Why?
我在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控制一块内存的"所有权"。相关文章:
- 为什么我的代码在输出中增加了93天
- 为什么要增加导致崩溃的指针
- 为什么"i"在循环的每次迭代中都没有增加?(C++)
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 为什么在C++中增加指针后打印了一个值而不是 NULL/0?
- 为什么这个 x 值在这个循环映射中没有增加?C++
- C++为什么原始指针不会增加shared_ptr的引用计数?
- 为什么 SFINAE 没有给出增加布尔值的正确结果?
- 为什么将鼠标悬停在静态 Win32 控件上会增加内存并删除我的 GUI?
- 为什么Virtual继承2类会增加对象大小
- 为什么未达到的 try-catch 块会增加运行时时间
- 为什么内存访问时间远远超过CPU缓存大小时会增加
- C++,为什么多维数组的一个元素的增加似乎增加了另一个元素
- WINAPI C/C++ -> 为什么二进制大小急剧增加?(从VS2013切换到VS 2015)
- 为什么添加虚拟方法在C 中增加了类大小
- 为什么 c++ 字符数组大小增加 1
- 为什么在增加 -fconstexpr-步数后无法解析常量表达式?
- 为什么要在我的OpenMP代码中增加执行时间
- 调整矢量大小后,为什么我不能增加矢量
- 为什么在保留向量中插入空结构会增加内存