高性能并行运行时系统:设计与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 机器配置

对关键的实现概念进行基准测试的硬件,是一个重要主题。我们尝试选用的处理器与当前最先进的多核和众核处理器类似,但又能展现不同供应商的不同架构选择。因为市场上有很多种并行处理器,所以我们的选择是随机的。我们选用的处理器来自三家不同硬件供应商(AMD、Intel和Marvell),即不同设计团队,它们实现了两种不同的指令集架构(Instruction Set Architecture,ISA)(x86_64和Arm V8.1a),所以我们相信我们提供的机器样本是合理的。

为了展示各种基本操作的表现情况,我们将在每台机器上用相同的基准程序测试它们。我们的目标不是比较各个供应商或架构,以表明某个处理器比另一个处理器更好(那是由市场决定的)。我们的基准测试是为了表明,所讨论的问题在不同的架构和实现上都是普遍存在的。因此,在设计运行于此类处理器上的并行运行时系统的时候,需要考虑这些问题。显然,我们可以测量特定的机器,并设计出在其上运行良好的代码。但是,如果想要代码是成功的,那么它就要比其他处理器实现有更长的生命周期,因此我们希望它可用于现在及将来的多种硬件上。因为没有时光机,所以我们无法确定未来机器提升性能的小妙招,但是,通过观察现在的各种机器,我们能了解哪些普遍的、可能会长存的性能特征。

我们希望表1.1~表1.3是本书最无聊的部分。这3个表格列出了作为示例的3种处理器实现的关键架构特性。你学完第3章后才会明白其中的一些细节。我们将Arm机器描述为“Marvell ThunderX2”,然而,它最初是由Cavium设计的,后来Marvell收购了Cavium。因此,如果你想了解更多关于它的细节,可以搜索“Cavium ThunderX2”(或“Cavium TX2”)。

我们在此提供这些配置数据,一方面是为了在初期准备时,将烦人的细节从本书剩余部分摘除,另一方面是为了复现性。如果你知道我们测量了什么,那么你也能测量这些东西,以确信我们没有像讲笑话一样胡编乱造(请注意,我们做这些测量时所使用的微基准程序,也可供你使用,它们是本书随附的小型的、不完整的OpenMP运行时开源版本的一部分。因此如果你愿意,你可以在你的机器上运行它们)。

表1.1 机器配置:Intel Xeon可扩充处理器

表1.2 机器配置:Marvell ThunderX2处理器

表1.3 机器配置:AMD EPYC处理器