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