g ++ - mp-4.8和g ++ - 4.8之间的性能差异有什么不同吗?

时间:2014-02-26 15:35:47

标签: performance compiler-construction g++4.8

我正在两台不同的机器上编译相同的程序,然后运行测试来比较性能。

两台机器的功率有所不同:一台是配备四台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

这里是服务器:

http://ark.intel.com/fr/products/64589/Intel-Xeon-Processor-E5-2667-15M-Cache-2_90-GHz-8_00-GTs-Intel-QPI

2 个答案:

答案 0 :(得分:1)

我想强调一个特别扭曲移动处理器上单线程代码结果的功能:

enter image description here

enter image description here

请注意,虽然基本速度有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性能计数器对其进行分析以验证这一点。