2015-07-12 65 views
0

从此https://software.intel.com/en-us/videos/purpose-of-the-mic-architecture我了解,具有复杂或众多随机内存访问的应用程序并不适用于Intel Xeon-phi。这是因为该架构使用61个内核和8个内存控制器。在L1和L2高速缓存未命中的情况下,需要长达100s的周期才能将线路存入内存并准备好供CPU使用。这种应用程序被称为延迟限制。适用于Xeon-phi多内核体系结构的应用程序

然后,本教程提到多核架构(仅限Xeon-phi协处理器)非常适合高度并行同构代码。这里有两个问题:

  1. 什么被称为同质代码?

  2. 什么是真正的应用程序可以充分受益于MIC架构?

+0

这是过于广泛,这个论坛的一个问题。 – Jeff

回答

1

我看到英特尔(MIC)架构为“基于x86的GPGPU”,如果你熟悉的GPGPU的概念,你会发现你自己熟悉的英特尔MIC。


一种均匀聚类是一个系统的基础设施与多个执行单元(即CPU)的所有具有相同的功能。例如,具有四个Intel Xeon处理器的多核系统是同质的。

异构集群是具有多个具有不同特征(即CPU和GPU)的执行单元的系统基础结构。例如,我的带有英特尔i7 Haswell(4个CPU),Nvidia GT740M(GPU)和Intel HD Graphics 4600(GPU)的Levono z510是一个异构系统。

异构代码的一个例子可能是一个视频游戏。
视频游戏有一个控制代码,由一个CPU的一个代码执行,用于控制其他代理执行的操作,其在GPU上执行的发送着色器,要在其他内核或GPU上执行的物理计算等。
在这个例子中,您需要编写运行在CPU上的代码(因此它是“CPU意识”)和运行在GPU上的代码(因此它是“GPU意识”)。这实际上是通过使用不同的工具,不同的编程语言和不同的编程模型

均匀码是代码,不需要知道ň不同的编程模型,每一个不同类型的代理。它只是相同的编程模型,语言和工具。
看看这个非常简单的sample codeMPI库。
代码全部写入C,它是相同的程序,只是采取不同的流程。


关于应用程序,那真是一个广泛的问题......

正如上面说我看到的英特尔MIC基于x86的ISA(至少其一部分)GPGPU。

的SDK特别有用(和你链接的视频中列出)与集群系统的工作是OpenCL,它可用于快速processing of images and computer vision,基本上用于任何需要相同的算法不同运行数十亿次输入(如加密应用程序/暴力强制)。
如果您在网页中搜索,你会得到一个想法上的一些基于OpenCL的项目。

要回答你的第二个问题,最好是问自己“什么不能利用MIC架构的?”我们很快就会发现,更多的算法是从Stream Processing的概念和相关主题遥远,其中包括Kernel之一,它适用于MIC越少。

+0

谢谢!你可以扩展你最后的想法,为什么流处理不适合MIC? – octoback

+0

@octoback它是!也许我一直含糊不清,我在编辑答案 – 2015-07-13 16:03:59

0

首先一个直截了当的回答你的问题直接 - 以获得最大的协处理器,你的代码应该能够使用大量的线程,并应量化。多少个线程?那么,你有60个核心(+/-取决于你的版本),每核心4个线程,用甜蜜点每个核心约2线程许多代码。有时即使不使用每个核心,也可以获得良好的性能。但矢量化非常重要;长(512字节)的矢量是协处理器速度的重要来源。现在

,上节目。英特尔至强融核协处理器使用两种不同的编程 - 卸载和本机。

在卸载模型中,您编写一个程序,确定该代码的哪些部分具有足够的并行性以利用协处理器上的大量内核,并使用卸载指令标记这些部分。然后在这些卸载的部分中,使用某种形式的并行机制(如OpenMP)编写代码。 (异构)

在本机代码,您不使用任何卸载指令但是,相反,使用-mmic编译器指令。然后你直接在协处理器上运行代码。您编写的代码将使用某种形式的并行机制,如OpenMP,以利用协处理器具有的大量内核。 (同类)

这些编程模型的另一个变体是使用MPI,通常除了OpenMP之外。您可以使用卸载编程模型,在这种情况下,MPI系统中的节点将成为系统中的主机节点。 (混合)或者,您可以使用本机编程模型,在这种情况下,您将协处理器视为系统中的另一个节点。 (如果主机和协处理器是节点,则是异构的;如果只使用协处理器,则是异构的。)

您可能已经注意到我所说的没有暗示主机和协处理器的单独编程风格。有一些优化可以使代码保留在协处理器上运行,但一般情况下,您为协处理器编写的代码也可以编译并在主机上运行,​​只需更改编译器选项。

至于现实世界的应用程序,请参见https://software.intel.com/en-us/mic-developer/app-catalogs