Multithreading 用于并行执行的cpu性能分析
最近,我对两台不同规格的计算机进行了“并行加速”比较 1-单AMD Ryzen 7 1800x,运行频率为3.6GHz。此cpu有8个物理内核和16个逻辑内核() 2-双Xeon 2695 v3(Haswell),在一块主板上以2.3GHz的频率运行。每个cpu有14个物理内核。因此,物理核总数为28,逻辑核总数为56() 我在两个系统上运行了一个线程数不同的程序。我知道这可能不是一个公平的比较,因为该程序也使用大约4GB的内存,我没有告诉内存规格,但加速图表如下所示。请注意,对于每个处理器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
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)因此,参考系统应该是比所有感兴趣的系统(即可以相互比较的系统)更古老(特别是更慢)的最现代的系统。您是如何测量线程时间的?什么操作系统?这个(显然不是很可扩展的)程序做什么?您尝试过其他程序吗?非常感谢您的详细解释。我只是想知道为什么参考系对于结论来说应该是相当古老的。例如,Xeon Haswell将于2014年上市,Ryzen将于2017年左右上市。我认为2012年的机器是一个很好的参考,因为我的两台机器是在2012年之后发布的。当然,如果有人想将2012年的机器与2014年和1027年进行比较,他必须选择2010年的参考。我说得对吗?或者有一个逻辑选择非常旧的参考?顺便说一句,仅供参考,该程序是一个分子模拟程序。由于Xeon机器有2个CPU,我们总共看到56个内核。问题是,当使用逻辑co时,这两台机器都会降级