2015-07-12 67 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