我将英特尔 MIC 架构视为“基于 x86 的 GPGPU ”,如果您熟悉GPGPU的概念,您会发现自己对英特尔 MIC 很熟悉。
同构集群是具有多个执行单元(即 CPU)的系统基础设施,它们都具有相同的特性。例如,具有四个 Intel Xeon 处理器的多核系统是同构的。
异构集群是具有多个具有不同特性的执行单元(例如CPU和GPU)的系统基础设施。例如,我的 Levono z510 及其 Intel i7 Haswell(4 个 CPU)、Nvidia GT740M(GPU)和 Intel HD Graphics 4600(GPU)是一个异构系统。
异构代码的一个示例可能是视频游戏。
视频游戏有一个控制代码,由一个 CPU 的一个代码执行,控制其他代理做什么,它发送着色器在 GPU 上执行,物理计算在其他内核或 GPU 上执行等等。
在此示例中,您需要编写在 CPU 上运行的代码(因此它是“CPU 感知的”)和在 GPU 上运行的代码(因此它是“GPU 感知的”)。这实际上是通过使用不同的工具、不同的编程语言和不同的编程模型来完成的!
同构代码是不需要了解n 个不同编程模型的代码,每个模型对应一种不同的代理。它只是相同的编程模型、语言和工具。
看看MPI库的这个非常简单的示例代码。
代码都是用C编写的,它是同一个程序,只是采用不同的流程。
关于应用程序,这确实是一个广泛的问题......
如上所述,我将英特尔 MIC 视为基于 x86 ISA 的 GPGPU(至少是其中的一部分)。
与集群系统一起工作特别有用(并在您链接的视频中列出)的 SDK 是OpenCL,它可用于快速处理图像和计算机视觉,基本上可用于需要相同算法以不同方式运行数十亿次的任何事物输入(如加密应用程序/暴力破解)。
如果你在网上搜索一些基于 OpenCL 的项目,你就会知道。
要回答你第二个问题,最好问问自己“什么不能利用 MIC 架构? ”我们很快就会发现,算法与流处理的概念和相关主题越远,包括Kernel越少,越适合MIC。