當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 黑龍江OA系統(tǒng) > 哈爾濱OA系統(tǒng) > 哈爾濱OA軟件行業(yè)資訊
高性能計(jì)算的免費(fèi)午餐結(jié)束了嗎?
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
文章來源:泛普軟件可擴(kuò)展性地位逐步提升
一直以來,在高性能計(jì)算領(lǐng)域,開發(fā)可擴(kuò)展的應(yīng)用對(duì)程序員來說非常重要,如今多核心處理器的繁榮發(fā)展更讓這成為了數(shù)以百萬的程序員們的首要任務(wù)。此前,有種擴(kuò)展性很好的高性能計(jì)算程序――“高度并行(embarrassingly parallel)”,簡稱EP計(jì)算。但人們必定不會(huì)僅僅滿足于“足夠好”的并行。任何擴(kuò)展及能夠保持?jǐn)U展的設(shè)計(jì)將是至關(guān)重要的。如果程序無法適應(yīng)未來的擴(kuò)展性要求,高效的設(shè)計(jì)也將不再重要?!扒罢靶詳U(kuò)展”將成為一個(gè)好的程序設(shè)計(jì)的關(guān)鍵組成部分。少一些EP將成為程序員的規(guī)范。
人們開始轉(zhuǎn)向多核處理器,意味著今后程序員需要運(yùn)用新技術(shù)來編寫可擴(kuò)展的應(yīng)用程序,并接受新觀念以取得應(yīng)用性能的進(jìn)一步提高。過去,隨著處理器時(shí)鐘頻率的提高,即使是一個(gè)寫得不好的應(yīng)用程序速度也會(huì)提高。但現(xiàn)在情況不同了,多核處理器已經(jīng)成為現(xiàn)實(shí),一個(gè)寫得不好的并發(fā)應(yīng)用程序的速度是無法提高的?,F(xiàn)今的程序員需要“并行思維”,編寫并行程序以更多的挖掘多核處理器的潛力。
并行思考且并行編寫程序是件很不容易的事。正如計(jì)算機(jī)科學(xué)教授Andrew S.Tanenbaum近日在08年的USENIX會(huì)議上所說,“順序編程已經(jīng)很難了,但并行編程比它更難”。顯然,隨著未來新一代架構(gòu)的發(fā)布,我們不愿一遍又一遍的執(zhí)行這些艱難的任務(wù)。未來的擴(kuò)展就提供了一種避免做大量重復(fù)工作的方法。
免費(fèi)的午餐
正如C++程序設(shè)計(jì)領(lǐng)域屈指可數(shù)的大師之一Herb Sutter幾年前所講的,“免費(fèi)的午餐結(jié)束了”,程序員不能再指望不斷提高的時(shí)鐘速率來加速應(yīng)用了。那么是否有一道新的免費(fèi)午餐出現(xiàn)呢?顯然程序員希望通過一種方式,讓他們今天投入的時(shí)間和精力能夠在未來獲得最大化的長期投資回報(bào)。
一些人認(rèn)為擴(kuò)展性就是新版的免費(fèi)午餐。在發(fā)布新架構(gòu)的時(shí)候,擴(kuò)展性提供了一種方法,讓程序員們不需要重寫代碼、重新執(zhí)行艱巨的任務(wù)。當(dāng)應(yīng)用可以成功的擴(kuò)展時(shí),各種軟件就可以很好的運(yùn)行在目前的雙核與四核處理器架構(gòu)上了,乃至未來更多核的架構(gòu)。
擴(kuò)展性是否是新的免費(fèi)午餐?這也許不是“免費(fèi)啤酒”那種意義上的免費(fèi)。擴(kuò)展性承擔(dān)了一部分工作。其目標(biāo)是讓今天的投資在未來能夠不斷獲得回報(bào)。
Forward scaling的定義
Forward scaling是一種軟件設(shè)計(jì)方法,能夠讓軟件應(yīng)用運(yùn)行在今天的多核處理器架構(gòu)中并提供卓越的性能,而且讓這種軟件應(yīng)用也可以適應(yīng)未來更多核心的架構(gòu)。Forward scaling的目標(biāo)就是找到這樣一種技術(shù)――在用戶增加更多處理器內(nèi)核時(shí)可以避免重寫整個(gè)代碼。這可能么?在許多情況下似乎可以實(shí)現(xiàn)。盡管沒有完美的解決方案,但目前可供選擇的方案可以有很大幫助。
Forward scaling與scaling是不同的,因?yàn)榍罢呤且粋€(gè)面向未來的擴(kuò)展性設(shè)計(jì),而非今天。隨著時(shí)間的推移,工具會(huì)改善,處理器的設(shè)計(jì)會(huì)改進(jìn),處理的數(shù)據(jù)量也會(huì)增長。要想讓未來的代碼更改維持在最小范圍,我們必須為這三個(gè)因素設(shè)計(jì)一個(gè)路徑,使程序在未來可以很好的擴(kuò)展。
開始設(shè)計(jì)時(shí)就要注意,今天并不需要為高達(dá)100多個(gè)內(nèi)核的架構(gòu)提供擴(kuò)展性設(shè)計(jì),我們只需要找到一條通往明天的路,同時(shí)保護(hù)大部分軟件投資。多年來,我們一直試圖設(shè)計(jì)這樣的軟件――為明天的系統(tǒng)準(zhǔn)備就緒的軟件?,F(xiàn)在軟件的擴(kuò)展性變得更加重要了。
Forward scaling設(shè)計(jì)
跟差的程序設(shè)計(jì)相比,好的程序設(shè)計(jì)會(huì)對(duì)未來作出預(yù)測并為此做好準(zhǔn)備。富有Forward scaling思維的設(shè)計(jì)可以預(yù)見到未來多核心處理器將會(huì)盛行。
那么既然如此,我們應(yīng)該如何設(shè)計(jì)程序呢?
首先,我們必須摒棄顯然不具擴(kuò)展性生產(chǎn)的編程方法。避免使用本地線程,如Pthreads, Windows線程, Boost 線程, and Java 線程。一般來說,使用本地線程編寫的代碼,隨著時(shí)間的推移根本不會(huì)有旺盛的生命力。利用本地線程會(huì)導(dǎo)致很多假設(shè)被編入低級(jí)程序中。
相反,我們應(yīng)采用基于標(biāo)準(zhǔn)的工具和足夠并行的方法,使我們能夠有機(jī)會(huì)處理更多數(shù)據(jù)。Forward scaling通過使用簡單的基于標(biāo)準(zhǔn)的工具,提供抽象的并行。OpenMP 、線程庫、英特爾TBB(線程構(gòu)建模塊),或者英特爾MPI 庫都可以確保今天采用的技術(shù)明天仍然有效。
庫將在forward scaling上發(fā)揮關(guān)鍵作用,而且當(dāng)程序員開始大規(guī)模向未來邁進(jìn)的時(shí)候,一個(gè)好的庫無疑將會(huì)存在巨大的需求。當(dāng)然,庫接口還需要不斷改進(jìn),以最大限度地發(fā)揮它的作用。許多開發(fā)者已經(jīng)通過使用英特爾Math Kernel Library(MKL)簡化了編程并可支持更多內(nèi)核。隨著我們的處理器的發(fā)展,英特爾將繼續(xù)調(diào)整該庫以為今后幾年的發(fā)展提供擴(kuò)展支持。英特爾的MKL目前已經(jīng)提供了應(yīng)對(duì)數(shù)以千計(jì)的處理器的擴(kuò)展。今后,更多的庫也能夠達(dá)到這樣的水平。
為了體現(xiàn)forward scaling的優(yōu)勢,軟件開發(fā)人員和他們的客戶必須選擇合適的硬件。在英特爾,我們正在努力實(shí)現(xiàn)系統(tǒng)的處理能力、內(nèi)存以及I / O帶寬的平衡。核心數(shù)量在增加,為實(shí)現(xiàn)應(yīng)用程序的性能提升,平衡系統(tǒng)是必不可少的。我們還要促進(jìn)處理器和內(nèi)存、處理器內(nèi)核本身之間更好地通訊。我們在英特爾QuickPath互連方面做的工作支持“Nehalem” 架構(gòu),促進(jìn)可擴(kuò)展性,大大降低了總線帶寬的競爭。當(dāng)然,沒有人會(huì)提供完美的平衡,但英特爾的理解是,平衡對(duì)保護(hù)軟件投資非常重要。
可擴(kuò)展性PK應(yīng)用效率
過去,應(yīng)用能夠?qū)崿F(xiàn)高效率是至關(guān)重要的,因?yàn)樗鼈兌歼\(yùn)行在昂貴的硬件上。但是,實(shí)現(xiàn)這一高效率是以程序員的生產(chǎn)力為代價(jià)的??磥斫窈蟮木置鏁?huì)是:低成本的硬件和高成本的程序員。創(chuàng)建可擴(kuò)至使用更多核心的未來并行程序?qū)μ岣呶磥砑軜?gòu)的性能是必不可少的。
著眼于可擴(kuò)展性而不是把重點(diǎn)放在提高應(yīng)用效率上,通常是更好地利用程序員資源的方法。具成本效益的多核處理器越來越多,降低了計(jì)算成本,減少了提供絕佳效率的客戶應(yīng)用需求。如果我們的程序是可擴(kuò)展的,實(shí)現(xiàn)百分之五十效率就足夠了,如果我們指望未來架構(gòu)可達(dá)到同樣的效率水平的話。若沒有實(shí)現(xiàn)擴(kuò)展性,那么從一個(gè)程序擠出效率相對(duì)來說就沒什么意義。
一旦我們創(chuàng)建了一個(gè)可擴(kuò)展程序,我們又將過上有“免費(fèi)午餐”的日子。所有新一代架構(gòu)都將有助于提高應(yīng)用程序的性能,程序員可以把精力放在為應(yīng)用添加新功能上,而不是為了跟上架構(gòu)的變化整天忙于重寫代碼。
保護(hù)軟件投資
今天一個(gè)好程序需要具有可擴(kuò)展性。選好了會(huì)使程序適應(yīng)未來的架構(gòu)變化,而壞的選擇將無法保護(hù)原來的軟件投資。
對(duì)并行多核系統(tǒng)的關(guān)注是否給了我們更多高性能計(jì)算機(jī)的選擇空間?或者M(jìn)PI會(huì)繼續(xù)成為可擴(kuò)展程序的編程選擇?如果高性能計(jì)算程序員繼續(xù)依靠的MPI ,那么非高性能計(jì)算程序員是否也會(huì)轉(zhuǎn)向MPI呢?在近期內(nèi),MPI將繼續(xù)主導(dǎo)最具擴(kuò)展性的程序。但從長遠(yuǎn)角度來看,一切皆有可能。
目前,對(duì)大多數(shù)程序員來說,擴(kuò)展性顯然是一個(gè)新且重要的話題。選擇更好的具擴(kuò)展性的方案,將對(duì)保護(hù)我們的投資至關(guān)重要。(IT專家網(wǎng))
- 1關(guān)注安全:09年網(wǎng)絡(luò)安全十大預(yù)言
- 2對(duì)于2009年九大網(wǎng)絡(luò)安全趨勢的預(yù)測
- 3Windows網(wǎng)絡(luò)安全審計(jì)的四部曲
- 4行業(yè)信息安全再揭企業(yè)之痛 63%用戶高風(fēng)險(xiǎn)
- 5泛普OA辦公系統(tǒng)的應(yīng)用分布式方式
- 6節(jié)假日期間網(wǎng)絡(luò)安全運(yùn)維四部曲
- 7淺析語音識(shí)別技術(shù)及其發(fā)展
- 8淺談企業(yè)反病毒選擇的四個(gè)原則
- 9企業(yè)視頻會(huì)議系統(tǒng)催生七層網(wǎng)絡(luò)管理
- 10能源行業(yè)OA軟件采購訂單流程整合示例
- 112009年存儲(chǔ)行業(yè)的三大社會(huì)化趨勢
- 12選擇服務(wù)器虛擬化技術(shù)十點(diǎn)必知
- 13虛擬化安全:安全領(lǐng)域的下一個(gè)主戰(zhàn)場
- 14可信芯片的基本功能介紹篇
- 15解析云計(jì)算安全服務(wù)的利與弊
- 16Web應(yīng)用程序管理的幾大策略
- 17數(shù)據(jù)安全:下一代數(shù)據(jù)保護(hù)解讀
- 18存儲(chǔ)業(yè)面臨決定性突破 信息化突飛猛進(jìn)
- 19中小企業(yè)服務(wù)器虛擬化應(yīng)用的成本分析
- 20神化了的虛擬化推動(dòng)業(yè)務(wù)變革
- 21汪琪:災(zāi)難恢復(fù)的發(fā)展趨勢與變革
- 22“混搭式”數(shù)據(jù)中心設(shè)計(jì) 讓企業(yè)成就高ROI
- 23淺談可信計(jì)算芯片標(biāo)注TCM與TPM
- 24開放云端宣言引發(fā)業(yè)界廠商的“內(nèi)訌”
- 25避免與SOA沖突 云計(jì)算引起IT專業(yè)人員不舒服
- 262009年存儲(chǔ)與客戶端虛擬化發(fā)展強(qiáng)大
- 27存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN已開始走向末路?
- 28虛擬化技術(shù)造成操作系統(tǒng)重大改變
- 29搜索引擎優(yōu)化的9個(gè)技巧
- 30集團(tuán)企業(yè)過冬 管理軟件如何作為?
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓