Intel于當地時間6月18日在德國漢堡正式發布了Larrabee GPU架構的轉世,基于MIC(集成眾核)的計算加速協處理器Xeon Phi。目前的產品開發代號為"Knights Corner",集成使用22nm 3-D Trigate/FinFET工藝制造的超50個Pentium P54C復刻版核心。
與此同時一些媒體如VR-Zone的專欄作者Theo Valich和3DCenter等也對其展開了分析,不過他們似乎忘記了重要一點——Intel所宣稱的MIC架構優越性如x86兼容等沒這么簡單,其中的一些部分競爭對手NVIDIA早在今年4月就已撰文指出過。下面就讓我們從一些公開資料透露的內容中分析一下到底在Intel MIC架構中存在“免費的午餐”與否。
MIC架構的x86兼容性
既然是為超級計算機以及高端工作站所設計,那么Intel自然會對Xeon Phi中的P54C核心進行改進。在Intel公開的說法中,Xeon Phi同樣屬于Intel 64(即AMD最早提出的x86-64架構)產品,那么實際是否如此呢?
回答是否定的,根據包括以下幾點:在Intel為開發者提供的指南[1]中明確表示,Knight Corner架構只支持Intel 64位架構指令集中的一部分子集,包括MMX、XMM、YMM寄存器操作在內的指令不被支持。換句話說,Knights Corner拋棄了17年來Intel力推的MMX、SSE和AVX指令集的絕大部分。取而代之的是,資訊網站BSN透露Intel在Xeon Phi中加入了新的512bit寬度ZMM寄存器指令集,使得Xeon Phi的矢量單元(vector unit)和其他所有Intel處理器產品都不相同,這意味著Xeon Phi系列產品和其他Intel CPU在二進制代碼上實際是不兼容的。
Intel在面向開發者的博客中也總結了這一點,內部高速總線、高度并行數據處理所需的特殊矢量單元等特性綜合導致了上面的結果——為Xeon Phi所編寫、編譯的代碼不能在其余CPU上運行,反之亦然:為SIMD大量優化的代碼對Xeon Phi同樣沒有意義。此外Intel還重申Xeon Phi是一款協處理器,需要CPU的輔助才能發揮應有的作用,從模式上來說已經和NVIDIA的Tesla加速卡類似,偏離了原有的設想。
而Xeon Phi在對于開發者的導向上也打破了此前和AMD的默契,此前Intel的開發文檔中均表態鼓勵程序員使用SSE2/AVX指令集并稱所有的 Intel64架構產品均支持SSE2——現在這一“潛規則”也已煙消云散。并且Intel是否會將Xeon Phi中的特有指令集導入其余產品如服務器/臺式機/筆記本CPU中也暫且不得而知。
不存在能自動并行化代碼的“魔法”編譯器
有人可能會提出:那么去除掉不兼容部分的二進制代碼呢?NVIDIA CTO Steve Scott早在今年四月份就撰文[3]告訴我們,這些代碼經過簡單的再編譯是有可能運行在MIC架構上的,但存在兩大問題:如果使用MPI API(one rank/core),MIC加速卡的50多個CPU核心將會分享8GB的內存,這遠遠小于目前HPC應用中1-2GB/每CPU核心的數量,而且50多個CPU核心同時通訊將會導致網絡傳輸堵塞,OpenMP API的情況也只是好一點;另外根據阿姆達爾定律,代碼中不能并行化的部分將成為極大的瓶頸——別忘了Xeon Phi的每個核心單線程能力實際上和十來年前的初代奔騰P54C沒什么兩樣,并且目前多數x86 CPU上運行的代碼并行度和線程數量都不高,簡單編譯自然無法發揮Xeon Phi的能力。
Scott表示,不管是現在還是未來,不會存在一個“魔法”編譯器,使得原有的代碼可以很好地自動并行化。在超級計算機領域甚至每個應用的代碼更換系統后都需要重新編譯一遍,目前還看不到哪個公司(包括Intel、NVIDIA或者其他任何人)能幫助程序員從這一工作中解脫出來。
此外,Scott引述的美國國家計算中心(NICS)的MIC架構性能演示[4]也側面說明Xeon Phi仍未解決Larrabee架構的一些問題——隨著線程數量的提高性能提升幅度越來越小,并且實際線程數量還遠未達到HPC級別。
NICS的MIC架構初步試驗結果
Intel在2008年進行的Larrabee模擬測試
總結
以上解釋與說明只指向一個事實:在MIC架構上編寫應用并不比走CUDA/OpenCL GPGPU的道路工作量小。即使是號稱通用性最強的OpenCL,代碼也必須根據硬件的架構特征做大量的優化與改動,否則得到的性能數據毫無實際意義。聯系到目前的實際情況,毫無疑問NVIDIA的CUDA無論性能還是走在了市場的最先端,而OpenCL和Intel要稍微落后一些。
當然,NVIDIA CTO Steve Scott在鼓吹CPU+GPU混合系統的優勢的同時,他在原文的評論里也表示Intel在軟件開發環境上仍然具有一定優勢:即使是需要大量修改代碼并重新編譯,具有x86或其他Intel SIMD ISA擴展開發經驗的程序員面對MIC架構也能很快上手,而CUDA或者OpenCL的編程模式則完全不同;另外CUDA目前主要走C/C++的道路,在 FORTRAN方面成績遠遠不如Intel可提供成熟編譯器的程度。Intel自己也聲稱,使用相對不受平臺限制的高級語言則不會遇到二進制代碼不兼容的問題。
總之,筆者仍然堅持自己的觀點:在超級計算領域最后的贏家一定是軟件開發環境以及Ecosystem打造情況最好的廠商,Intel的財力使其最容易來達到這一目標,但目前的Xeon Phi還有待于進一步的檢驗,與Tesla相比還為時過早。