高效并行編程:英特爾的魔法帽
DOIT原創(chuàng) 崔昊 發(fā)表于:12年11月27日 19:00 [原創(chuàng)] DOIT.com.cn
高效并行編程:英特爾的魔法帽
在話題進(jìn)入有關(guān)至強(qiáng)融核的并行編程之前,我們首先要來看看英特爾為至強(qiáng)融核所準(zhǔn)備的軟件開發(fā)環(huán)境。從開源工具的角度來看,雖然gcc只能編譯核心,而不能編譯應(yīng)用程序,但用戶仍然有Python可用。Debug工具和編譯庫也有對開源平臺的相應(yīng)支持,但是在分析工具、工作負(fù)載計劃上,我們并未看到開源平臺的蹤影。
但英特爾事實(shí)上一直擁有完整的軟件開發(fā)、編譯生態(tài)環(huán)境支持,推出了大量的相關(guān)軟件產(chǎn)品,包括英特爾C++編譯器、Fortran編譯器,以及Debug工具、VTune Amplifler XE等軟件支持,而在工作負(fù)載規(guī)劃上,像Altair PBS Professional、Adaptive Computing Moab等第三方工具也提供了良好的支持。總的來說,至強(qiáng)融核的軟件開發(fā)環(huán)境是比較完整和健全的。
話題回到編程上來,英特爾并行編程傳播總監(jiān)James Reinders有兩句話非常值得回味,其一是“Don't touch my software!Don't touch my data!(不要觸碰我的軟件,不要動我的數(shù)據(jù)!)”其二是“Very Important, yet Nobody Gets a Free Lunch!(并行編程很重要,但是沒有人能吃到免費(fèi)的午餐)”他的兩句話對于了解至強(qiáng)融核的編程、編譯、軟件平臺有非常重要的意義。
James Reinders以SAXPY為例,通過Fortran改寫串行代碼為并行,進(jìn)行了至強(qiáng)E5處理器運(yùn)行串行代碼、至強(qiáng)E5處理器運(yùn)行并行代碼和至強(qiáng)融核運(yùn)行并行代碼的三個計時測試,得到的就是上面的69.097、0.460和0.197的三個數(shù)值。
注意上面的細(xì)節(jié)就會發(fā)現(xiàn),要想獲得性能的提升——無論是至強(qiáng)還是至強(qiáng)融核——最關(guān)鍵的其實(shí)是將原有的代碼進(jìn)行并行化改造,這種并行化改造成本和時間顯然會是非常高昂的,但是其帶來的性能提升又是顯著的,那用戶該如何取舍呢?而針對業(yè)界已經(jīng)發(fā)展多年的CUDA編程及NVIDIA的GPGPU平臺,到底至強(qiáng)融核在編程上是否有“便宜的午餐”?
首先我們需要了解,并行時代本來就是編程并行化的趨勢,無論是將串行編程改變?yōu)橥ㄓ貌⑿羞是高度并行的代碼,無論是在并行時代使用至強(qiáng)還是至強(qiáng)融核,都需要進(jìn)行并行化的編程,而目前我們絕大多數(shù)的應(yīng)用程序都是基于串行編程的。
這也就意味著我們需要對大量的串行代碼實(shí)現(xiàn)并行化改造,在這種改造中,肯定會出現(xiàn)可以高度并行或是只能普通并行的應(yīng)用劃分,但無論是哪一極,顯然進(jìn)行并行化編程的時候,用戶都不會希望針對至強(qiáng)和至強(qiáng)融核,或者說多核主處理器和眾核協(xié)處理器進(jìn)行分別得編程,而基于英特爾的模式“Reality: Same source code (after we added parallelism) for Intel Xeon processor and Intel Xeon Phi coprocessor”,這顯然會是一種更為簡單的方式,雖然可以想見針對至強(qiáng)和至強(qiáng)融核的復(fù)雜的編程——SAXPY實(shí)在是太簡單、太基礎(chǔ)了——仍然會有一定量的代碼修正工作,但是這已經(jīng)極大的減少了工作量。
這就像James Reinders所說的,“不會有免費(fèi)的午餐”,但是用戶只要付出一定的代價,這頓午餐還是會吃的相對舒服和溫飽的,而且他也指出,至強(qiáng)和至強(qiáng)融核的同步并行編程最大的優(yōu)勢是生態(tài)環(huán)境(開發(fā)環(huán)境)的融合復(fù)用,他表示:“如果你想用相同的語言(比如Fortran)、相同的并行編程模型、熟悉的工具滿足高度并行的需要,至強(qiáng)和至強(qiáng)融核是最好的選擇!
James Reinders在演講中也特別提到:“編程并不像看起來那么容易,并行編程更是如此。”至強(qiáng)和至強(qiáng)融核協(xié)處理器的混合架構(gòu),至少還帶來一點(diǎn)好處:用戶可以進(jìn)行選擇,至少增加了一項(xiàng)針對高度并行計算的加速方案,而編程看起來雖有困難,但仍然有可以從至強(qiáng)處理器原本的并行編程中可以借鑒的地方——至少編程語言可以選擇Fortran和C++。
另外談一點(diǎn)題外話,至強(qiáng)融核以PCIe插卡形式增加在服務(wù)器中,而英特爾至強(qiáng)E5處理器也繼承了PCIe控制器和內(nèi)存控制器,這對于至強(qiáng)+至強(qiáng)融核形成更好的通信低延遲表現(xiàn),相信會有更好的幫助。
而從編程的角度來說,James Reinders在有關(guān)至強(qiáng)和至強(qiáng)融核的編程預(yù)覽文檔中給出了這樣的建議:
我們?nèi)绾螢閼?yīng)用程序選擇至強(qiáng)還是至強(qiáng)融核處理器呢?這里大致有兩個基本考慮因素:
1、擴(kuò)展性:應(yīng)用程序的擴(kuò)展是否準(zhǔn)備好利用至強(qiáng)融核的高度并行計算能力?通常這是展現(xiàn)至強(qiáng)融核并行擴(kuò)展能力最有力的證據(jù)。
2、矢量和內(nèi)存的使用情況:其中分為:
a)對矢量單元有極強(qiáng)的需求
b)會更多的使用本地內(nèi)存帶寬,甚至超過了至強(qiáng)處理器所能提供的。
他認(rèn)為,如果應(yīng)用同時滿足這兩點(diǎn),就可以計劃向至強(qiáng)融核遷移,反之,用戶則需要在考慮考慮——英特爾當(dāng)然還要顧及到至強(qiáng)處理器的市場份額問題。
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.