Multithreading 用于并行执行的cpu性能分析

Multithreading 用于并行执行的cpu性能分析,multithreading,performance,parallel-processing,cpu,Multithreading,Performance,Parallel Processing,Cpu,最近,我对两台不同规格的计算机进行了“并行加速”比较 1-单AMD Ryzen 7 1800x,运行频率为3.6GHz。此cpu有8个物理内核和16个逻辑内核() 2-双Xeon 2695 v3(Haswell),在一块主板上以2.3GHz的频率运行。每个cpu有14个物理内核。因此,物理核总数为28,逻辑核总数为56() 我在两个系统上运行了一个线程数不同的程序。我知道这可能不是一个公平的比较,因为该程序也使用大约4GB的内存,我没有告诉内存规格,但加速图表如下所示。请注意,对于每个处理器 s

最近,我对两台不同规格的计算机进行了“并行加速”比较

1-单AMD Ryzen 7 1800x,运行频率为3.6GHz。此cpu有8个物理内核和16个逻辑内核()

2-双Xeon 2695 v3(Haswell),在一块主板上以2.3GHz的频率运行。每个cpu有14个物理内核。因此,物理核总数为28,逻辑核总数为56()

我在两个系统上运行了一个线程数不同的程序。我知道这可能不是一个公平的比较,因为该程序也使用大约4GB的内存,我没有告诉内存规格,但加速图表如下所示。请注意,对于每个处理器

speedup = (time of one thread on that CPU) / (time of N threads on that CPU)
因此,对于1个线程,Ryzen和Xeon都将缩放为1

如果有人看这张图表,他可能会说Xeon的加速比Ryzen好。例如,对于8核,Ryzen的加速比为3.4,而Xeon的加速比为4.69

但是,如果我们检查时间数据,我们将看到8个线程的执行时间相同。此外,Ryzen的性能优于Xeon。显然

S_ryzen = 900/263        <        S_xeon = 1188/253
S_ryzen=900/263

所以,只看加速数据,听起来是误导。另一方面,我确实希望8线程ryzen的执行时间应该比Xeon少,例如200秒,因为它具有更好的单核性能

关于这两个处理器的性能比较,可以得出什么结论?我知道xeon提供了更多的内核,但以8个内核(两者都有)为例,哪个处理器的性能更高?

让S(U,N)表示在系统U上获得的加速比,其中基线程序(加速比公式中的分子)使用1个线程,而改进后的程序使用N个线程。即:

S(U,N)=TimeU(1)/TimeU(N)

因此:

S(Xeon,8)>S(Ryzen,8)

这意味着:

TimeXeon(1)/TimeXeon(8)>TimeRyzen(1)/TimeRyzen(8)

但我们不能就任何两个执行时间之间的关系得出任何结论。我们只能说Xeon的扩展性更好(即程序能够比Ryzen更有效地利用Xeon上的额外资源),但这并不意味着它在执行时间方面表现更好。这只是一个数学上无效的结论。例如,我们不能得出TimeXeon(8)>TimeRyzen(8)的结论

不过,我们可以看到:

S(Xeon,8)>S(Xeon,4)

即:

TimeXeon(1)/TimeXeon(8)>TimeXeon(1)/TimeXeon(4)

两个TimeXeon(1)条款相互抵消,我们得到:

TimeXeon(4)>TimeXeon(8)

现在是关键的观察。为什么我们能够从两个给定的加速中推断出两个执行时间在同一个CPU上但在两个不同的CPU上是如何相关的?因为在同一个CPU上,两个加速的基线是相同的,这使我们能够相互抵消它们

那么,我们如何在两个不同的CPU上进行相同的推导呢?通过使用共享基线或参考系统。通常,选择一些旧系统作为基线。例如,您可以在这里选择Willamette,它是2000年发布的奔腾4处理器。当然,您需要选择一个可以运行实验的系统来测量基线执行时间。因此,加速比可按以下公式计算:

Sref(U,N)=timewillamete(1)/TimeU(N)

从本质上讲,TimeWillamette(1)成为共享术语。这个公式比前一个公式有用得多。例如,您可以很容易地计算S(U,N),只给出Sref(U,N),如下所示:

S(U,N)=Sref(U,N)/Sref(U,1)

因此,如果Sref(Xeon,8)>Sref(Xeon,4),那么从数学上可以推断出TimeXeon(8)Sref(Ryzen,8),那么从数学上可以推断出TimeXeon(8) 使用此方法规范化性能度量。SPEC CPU 2006套件:

SPEC使用了一个历史悠久的Sun系统,即“Ultra Enterprise 2” 1997年推出,作为参考机器。参考机器 与参考机器一样,使用296 MHz UltraSPARC II处理器 对于CPU2000。但这两个套件的参考机器不是 相同:CPU2006参考机具有更好的性能 缓存,CPU2000参考机器无法容纳足够的内存 运行CPU2006的内存

2017年CPU规格使用:

参考机器是历史上的Sun Microsystems服务器Sun 使用2100 MHz UltraSPARC IV+芯片发射V490。UltraSPARC IV+被激活 2006年推出,比CPU2000和 CPU2006参考机器(300 MHz 1997 UltraSPARC II)

无论是来自同一系统还是不同系统,都可以对规范化的数字进行相互比较


因此,参考系统应该是比所有感兴趣的系统(即可以相互比较的系统)更古老(特别是更慢)的最现代的系统。

您是如何测量线程时间的?什么操作系统?这个(显然不是很可扩展的)程序做什么?您尝试过其他程序吗?非常感谢您的详细解释。我只是想知道为什么参考系对于结论来说应该是相当古老的。例如,Xeon Haswell将于2014年上市,Ryzen将于2017年左右上市。我认为2012年的机器是一个很好的参考,因为我的两台机器是在2012年之后发布的。当然,如果有人想将2012年的机器与2014年和1027年进行比较,他必须选择2010年的参考。我说得对吗?或者有一个逻辑选择非常旧的参考?顺便说一句,仅供参考,该程序是一个分子模拟程序。由于Xeon机器有2个CPU,我们总共看到56个内核。问题是,当使用逻辑co时,这两台机器都会降级