使用超线程运行仿真使运行时间加倍


问题内容

我使用python / numpy / cython编写的模拟。由于我需要对许多模拟运行求平均,因此我使用多处理模块来批量运行所有单个模拟运行。

在办公室,我有一个带HT的i7-920工作站。在家里,我有没有i5-560。我以为我可以在办公室中的每个批次中运行两倍数量的模拟实例,并将运行时间减少一半。令人惊讶的是,每个实例的运行时间都比我的家庭工作站花费的时间多一倍。这样,在家里并行运行3个模拟实例将花费8分钟,而在办公室运行6个实例则花费大约15分钟。使用’cat
/ proc / cpuinfo’我验证了’siblings’= 8,’cpu cores’= 4,因此启用了HT。

我不知道任何“节约总运行时间”的法则(尽管从科学的角度来看,这可能很有趣:)),而跳到这里的某人可能可以弄清楚这个难题。


问题答案:

也许上下文切换会产生更多的开销,这是由6个 大规模 计算过程和仅4个实际内核引起的。如果进程竞争CPU资源,则它们可能会使用效率低下的CPU缓存。

如果仅启用4个内核而不是6个内核,结果如何?