Xeon Phi协处理器和Xeon Phi主处理器有何区别?

5

主处理器和协处理器有什么区别?特别是Xeon Phi协处理器和Xeon Phi主处理器?

我有一些关于这些机器的性能结果(并行化的OpenMP扩散方程代码正在运行),它们表明当相同数量的线程工作时,主处理器的工作速度更快。我想了解它们之间的区别,并将它们与我的结果联系起来。


你们的机器中Phi的确切型号是什么?你是否询问了执行模式(模型)-https://software.intel.com/en-us/articles/intel-xeon-phi-programming-environment-它们被命名为“Offload”/“Coprocessor native”/“Symmetric”?主机CPU的核心(不是Phi,而是一些标准的Xeon E3/E5)在标量代码上通常比Phi核心更快;但Phi有很多核心,它们能够执行矢量化代码。 - osgx
@osgx 模型是:Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz - 看起来这些运行与执行模式有关。我知道协处理器运行时是作为协处理器本地执行模式,但我不确定主机处理器的情况。你认为它应该是卸载模式吗? - Amir
1
@Jeff,我找到了这份文档:链接 - 正如你所提到的,Xeon Phi协处理器速度较慢,但可以使用更多,对吗?那是什么原因呢?技术老旧吗? - Amir
Xeon Phi基于1995年(P54C)的Pentium核心。它缺乏现代Xeon核心所拥有的巨大重排序缓冲区和预取能力。此外,它每个线程只支持单个指令,每个核心双发射(而现在的Xeon是类似六发射)。相对于现代Xeon核心,它的频率较低。然而,由于它们是运行在较低频率的更小的核心,因此可以将更多的核心封装在单个芯片上,从而在高并发工作负载下实现更高的综合性能。此外,Xeon Phi是512位的SIMD,而直到Skylake时期,Xeon才会具备这样的特性。 - Jeff Hammond
https://software.intel.com/en-us/articles/intel-xeon-phi-core-micro-architecture 这篇文章详细介绍了Xeon Phi微架构的细节。 - Jeff Hammond
显示剩余2条评论
2个回答

5
只是为了重申Jeff在评论中所说的,您拥有一个带有附加Xeon Phi协处理器的Xeon主机。当前一代的Xeon Phi(Knight's Corner)仅作为协处理器提供,而不是作为独立的Xeon Phi主机(下一代Knight's Landing应该会提供此功能)。
当您从主机Xeon运行程序时,没有外部托管,根据这个网站,看起来您可以使用多达16个线程运行。请注意,每个核心的速度约为2.2 GHz。
当您在Xeon Phi协处理器上以本地执行模式运行程序时,您应该可以使用更多的线程。使用的最佳线程数取决于您所拥有的Xeon Phi型号(有些最适合使用56个,有些则最适合使用60个)。但是请注意,每个Xeon Phi核心(大约1.2 GHz)明显比单个Xeon核心(大约2.2 GHz)弱。许多核心的Xeon Phi技术的好处在于:您可以跨许多核心运行。
最后一个非常重要的事情是,Xeon Phi具有512位宽的SIMD指令集。因此,您可以在Xeon Phi协处理器上支持比主机更好的SIMD向量化。在您的情况下,我认为您的Xeon主机仅具有256位SIMD矢量处理单元。因此,如果您尚未这样做,您可以利用SIMD向量化,在Xeon Phi上提高性能(如果您使用单精度,则可高达x16)。您的Xeon主机将仅提供高达x8的性能。为了启动您的谷歌远足,OpenMP 4.0允许您编写类似于#pragma omp simd的内容,以便告诉编译器何时在整个代码中向量化较低级别的循环。如果您真的想从Xeon Phi获得最大性能,则必须添加SIMD向量化。
因此,直接回答您的问题:使用相同数量的核心比较Xeon主机和Xeon Phi协处理器的性能结果是无用的。我们已经知道每个Xeon Phi核心比每个Xeon核心慢。 如果要进行直接比较,则应使用每个允许的最大核心数(分别为60和16),并充分利用矢量处理单元。

好的回答 - 只有几点需要注意: - froth
3
好的回答 - 只有几个需要注意的地方:协处理器上的每个核心都有4个线程,因此60个核心的协处理器总共有240个线程。每个线程最多每两个时钟发出一条指令。因此,每个核心至少需要2个线程才能保持忙碌状态。因此,根据您的代码的缓存行为和并行性,有时使用少于最大核数可以获得更好的性能。但是,如果您具有并行性,则使用所有核心(除1个 - 留一个给操作系统等)最大核心数 X每个核心3或4个线程是最佳的。 - froth
1
@froth true。我没有在我的答案中添加这个原因的唯一原因是它并不反映我的个人经验。使用60个线程(有时是120个线程),我通常会看到60核协处理器的最佳性能。但是,每当我添加超过那个点的更多线程时,我只看到性能下降。尽管你提到的是正确的,但每次我在Xeon Phi上运行代码时,我都会重新测试这个问题。 - NoseKnowsAll
@froth 感谢你们的全面回复。我同意你们的说法,因为当我使用 Gauss-Seidel 线性求解器时,120 线程的结果比 240 线程稍微快一些。但是当我使用 Jacobi 线性求解器时,120 和 240 线程的速度几乎相同。因此,算法和求解器也可能影响这个问题。 - Amir
等等,你是在告诉我KNL可以像Xeon处理器一样用作CPU,只不过我要插入一个KNL处理器?会使用什么样的主板呢?我能把Xeon插到同一个主板上吗?还是像x87一样成为协处理器?我之前完全不知道这些。 - Z boson
1
@Zboson 是的。下一代KNL将作为x86芯片提供。它也将作为类似于插入PCI-e端口的KNC协处理器提供。除此之外,我并不知道更多的信息。 - NoseKnowsAll

1
如果你在谈论当前一代(KNC)而不是下一代(KNL),那么这些是定义。
主处理器:托管协处理器的约8核/约16线程Xeon,这意味着通过PCIe总线连接协处理器的Xeon主机。
协处理器:挂在你的Xeon主机上的约60个核心/约240个线程协处理器,通过Xeon的PCIe总线连接。
主机使用离线指令或通过运行某些分布式编程范例(如MPI)本地运行高度并行/可向量化作业,将其分配给协处理器。
至于关于下一代主处理器的评论,评论者指的是下一代Xeon Phi(KNL)可以配置为挂在PCIe总线上的协处理器(像第一代Xeon Phi,KNC),也可以配置为插入到主板中的普通处理器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接