我正在一个集群上运行一些科学模拟代码,该集群的节点包含 Intel Xeon E5-2630 v3 CPU。该集群使用 CentOS 7.2.1511,我使用的 gcc 版本是 5.1.0,汇编程序是 2.23.52.0.1-55。
现在,我尝试在朋友的工作站上运行相同的代码,该工作站有两个 Xeon E5-2697 v3 CPU。它安装了 Ubuntu 16.04 LTS。在这台机器上,我的代码运行速度比在集群上慢 2-2.5 倍。我期望至少与集群上的性能相同。
奇怪的是,在朋友的工作站上,我运行的 30 个作业中,有 2 个的运行速度是集群上的 3 倍(或 1.5 倍)。系统上有 2x28 个线程,所以我认为这与此有关,但我的朋友也在运行一些作业(总共有 32 个)。
我们还对这两个系统上的汇编代码进行了比较,尽管使用了不同版本的 gcc,但代码几乎完全相同。该代码也不是 IO 密集型的,仅使用约 5MB 的 RAM。
什么原因可能导致如此大的性能差异?我该怎么做才能找出导致这种情况的原因?
编辑: 还这里您可以找到两个 CPU 的性能比较。由于我的代码是单线程的,因此单线程评级在这里更为重要。