我正在两台不同的机器上编译相同的程序,然后运行测试来比较性能。
两台机器的功率有所不同:一台是配备四台2.3GHz处理器的MacBook Pro,另一台是配备12台2.9 GHz处理器的戴尔服务器。
但是,mac会在更短的时间内运行测试程序!!
编译的唯一区别是我在机器mac上运行g ++ - mp-4.8,而在另一台机器上运行g ++ - 4.8。
编辑:没有并行计算正在进行,我的进程是唯一在服务器上运行的进程。此外,我还更新了戴尔的核心数量。编辑2:我进行了三次增加复杂性的测试,所获得的时间为(Dell,Mac)格式,以秒为单位:(1.67,0.56),(45,35),(120,103)。这些差异非常大!
编辑3:关于实际的处理器速度,我们与系统管理员一起考虑了这一点,但仍然没有充分的理由。以下是MacBook处理器的规格:
http://ark.intel.com/fr/products/71459/intel-core-i7-3630qm-processor-6m-cache-up-to-3_40-ghz
这里是服务器:
答案 0 :(得分:1)
我想强调一个特别扭曲移动处理器上单线程代码结果的功能:
请注意,虽然基本速度有500 MHz的差异(问题提到2.3 GHz,我们看的是同一个CPU吗?),当Turbo Boost最大运行时,单线程速度只有100 MHz的差异
Core-i7也使用比其服务器更快的DDR,后者通常以较低的时钟速度运行,具有更多缓冲区以支持更大容量的RAM。通常,Xeon上的通道数量和L3缓存大小的差异弥补了这一点,但不同的工作负载将以不同的方式使用缓存和主存储器。
当然,世代的改进也会产生影响。 Ivy Bridge与Sandy Bridge的重要性因应用而异。
最后一种可能性是程序运行时不受CPU限制。 I / O子系统,GPGPU的速度等会对运行这些系统的应用程序影响多个数量级的性能。
答案 1 :(得分:1)
编译器实际上是相同的(-mp只表示这个gcc版本是通过macports安装的)。
您观察到的性能差异来自不同的CPU:服务器是一个“Sandy Bridge”微架构,运行速度为3.5 GHz,而MacBook有一个更新的“Ivy Bridge”CPU运行在3.4 GHz(单线程涡轮增压速度)。
在Sandy Bridge和Ivy Bridge之间只是英特尔用语中的“Tick”,这意味着该过程已经改变(从32nm到22nm),但微架构几乎没有变化。 Ivy Bridge仍有一些变化可以改善某些工作负载的IPC(每个时钟周期的指令)。特别是,除法操作(整数和浮点)的吞吐量增加了一倍。 (有关更多更改,请参阅AnandTech上的评论:http://www.anandtech.com/show/5626/ivy-bridge-preview-core-i7-3770k/2)
由于您的工作负载包含许多分区,这非常适合您的结果:“小”测试用例显示最大的改进,而在较大的测试用例中,改进的核心性能可能会受到内存访问的影响,这似乎大致相同两个系统的速度。
请注意,这是纯粹受过教育的猜测,给出了当前的信息 - 人们需要查看基准代码,编译器标志,并使用CPU性能计数器对其进行分析以验证这一点。