我使用 GNU Parallel 来执行基准测试,使用 20 个核心来测试与仅在 1 个核心上执行相同工作相比的加速情况。我是否应该期望几乎完全线性缩放,即我的计算速度是否会比仅使用一个核心快大约 20 倍?
为了澄清,调度程序(例如 slurm)是不是正在使用。
答案1
这取决于。唯一确定的方法就是测量。
如果 CPU 具有超线程:否。超线程会将 CPU 转换为 2 个核心,性能约为单线程的 70%。
如果核心共享缓存:也许不会。根据您的应用程序,它可能严重依赖于大缓存。由于多个核心共享相同的缓存,因此您将面临更多缓存未命中的风险。
如果 CPU 根据温度调整频率(也称为睿频加速): 不会。与 CPU 中的两个内核以相同速度运行相比,单个内核会导致 CPU 温度较低。这可能会导致 CPU 作为单核运行速度比多个核处于活动状态时运行得更快。这通常类似于超线程:每个核心都会变慢,但总吞吐量会更高。
如果您的工作严重依赖 I/O:这要看情况。看https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/