近年來,某些涉及復(fù)雜、大規(guī)模數(shù)據(jù)處理的軟件領(lǐng)域的復(fù)雜程度越來越高。因此,現(xiàn)在在現(xiàn)代硬件上處理需要數(shù)小時,有時甚至數(shù)天或數(shù)周。處理各種模擬、能源分析、計算機(jī)輔助設(shè)計和計算機(jī)輔助制造 (CAD/CAM)、圖形渲染、生命科學(xué)、財務(wù)和數(shù)據(jù)轉(zhuǎn)換的軟件尤其如此。加速這些軟件包中的處理功能不僅可以提高用戶滿意度,而且可以在使用該軟件的組織中實現(xiàn)更高的準(zhǔn)確性、更好的決策和更高效的工作程序。因此,軟件加速已成為這些領(lǐng)域軟件組織的重中之重。
一種明顯的軟件加速方法是投資于更強(qiáng)大的計算機(jī)硬件。隨著處理器技術(shù)的不斷改進(jìn),這種方法作為短期決策是有效的。然而,從長遠(yuǎn)來看,它往往會失敗,因為處理需求也往往會持續(xù)增加,并且在許多情況下結(jié)果不符合應(yīng)用要求。對于大規(guī)模部署的軟件,對強(qiáng)大服務(wù)器的投資可能非常昂貴。由于這些因素,軟件組織越來越多地尋求并行和分布式處理系統(tǒng)作為加速耗時的計算應(yīng)用程序的經(jīng)濟(jì)有效的方式。
并行計算選項
使用并行計算來加速高度復(fù)雜的計算過程并不是一個新概念。這種方法已經(jīng)過測試和驗證,并且隨著最近價格實惠的多核和基于通用圖形處理單元 (GPGPU) 的技術(shù)的涌入,它現(xiàn)在比以往任何時候都更加重要。
然而,選擇正確的技術(shù)來加速耗時的計算過程遠(yuǎn)非一個簡單的決定。實現(xiàn)并行或分布式系統(tǒng)的各種選項在最終的加速潛力以及直接開發(fā)成本和間接/長期成本(維護(hù)、基礎(chǔ)設(shè)施、能源等)方面存在很大差異。在考慮將現(xiàn)有代碼遷移到并行或分布式架構(gòu)的平臺時尤其如此。與更好的替代方案相比,選擇不太理想的系統(tǒng)可能會導(dǎo)致直接和間接成本顯著增加。
選擇正確的并行或分布式架構(gòu)的部分不確定性在于 耗時過程的多樣性,每個過程都涉及不同的要求和考慮。在為特定流程選擇加速方法時,重要的是要考慮所涉及場景的特征和限制。開發(fā)人員可以使用一些參數(shù)來表征高度計算的過程,然后選擇適當(dāng)?shù)募铀俜椒ā?/p>
CPU 密集型與 I/O 密集型進(jìn)程
某些類型的應(yīng)用程序(例如數(shù)據(jù)倉庫和企業(yè)資源規(guī)劃)以廣泛的數(shù)據(jù)訪問為特征,而其他類型的應(yīng)用程序(例如模擬、渲染和地形分析)通常更加強(qiáng)調(diào)算法或受 CPU 限制的復(fù)雜性。如果要并行執(zhí)行的應(yīng)用程序部分是算法而不是數(shù)據(jù)密集型(也就是說,它們受 CPU 限制多于 I/O 限制),則在本地網(wǎng)絡(luò)上并行執(zhí)行,或者在某些情況下超過應(yīng)考慮廣域網(wǎng) (WAN),因為它有效地利用了可用的硬件資源。對于數(shù)據(jù)綁定較多且涉及讀取和寫入大量數(shù)據(jù)的進(jìn)程,所選擇的架構(gòu)應(yīng)解決預(yù)期的數(shù)據(jù)瓶頸,重點(diǎn)是高吞吐量磁盤和網(wǎng)絡(luò)系統(tǒng)。
高度隔離與環(huán)境相關(guān)的過程
此特性指的是要并行執(zhí)行的進(jìn)程與主機(jī)環(huán)境之間的交互級別——特別是要并行運(yùn)行的應(yīng)用程序的大小和復(fù)雜性(可執(zhí)行文件、庫和二進(jìn)制依賴項)、文件系統(tǒng)活動、以及訪問其他環(huán)境數(shù)據(jù)庫,例如注冊表和環(huán)境塊。一個高度隔離的應(yīng)用程序涉及最少的此類交互;然而,依賴于運(yùn)行時環(huán)境的應(yīng)用程序通常需要并行計算體系結(jié)構(gòu)來為相關(guān)計算機(jī)預(yù)先配置所需的全套軟件和數(shù)據(jù)文件,或者包括一個虛擬化組件來模擬每個計算節(jié)點(diǎn)上的運(yùn)行環(huán)境。存在幾種并行計算環(huán)境中的虛擬化方法,
令人尷尬的并行與固有的串行過程(以及介于兩者之間的所有過程)
使構(gòu)建并行計算架構(gòu)的開發(fā)工作變得復(fù)雜的一個問題是應(yīng)用程序是否適合“切片”成多個可并行運(yùn)行的獨(dú)立可執(zhí)行部分。一些遺留應(yīng)用程序需要密集的代碼結(jié)構(gòu)重構(gòu)才能實現(xiàn)這一點(diǎn)。其他人需要很少或根本不需要工作來準(zhǔn)備應(yīng)用程序以進(jìn)行并行執(zhí)行。最常見的例子是批量順序數(shù)據(jù)處理,其中相同的過程一遍又一遍地執(zhí)行,每次都使用不同的輸入集。此類示例有時被描述為“令人尷尬的并行”,以表明將它們轉(zhuǎn)換為并行執(zhí)行模型的相對簡單性。另一方面,一些應(yīng)用程序“本質(zhì)上是串行的”,并不適合并行執(zhí)行。有了這些應(yīng)用程序,
高端與經(jīng)濟(jì)高效的加速要求
商業(yè)并行計算平臺成本差異很大,高端系統(tǒng)比低端系統(tǒng)高幾個數(shù)量級。因此,通過遷移到并行計算環(huán)境來定義性能改進(jìn)預(yù)期非常重要。根據(jù)定義,通過并行計算加速是一種收益遞減的舉措。在許多情況下,將執(zhí)行時間減少 50% 到 70% 就足以使應(yīng)用程序性能發(fā)生根本性的變化,而將其提高到 80% 到 90% 的額外價值并不值得投資。雖然低端和中端并行計算系統(tǒng)提供了合理的性能改進(jìn),但高端系統(tǒng)提供了 10% 到 20% 的額外加速,但其顯著的額外成本并不總是合理的。
舊版應(yīng)用程序與新開發(fā)的應(yīng)用程序
出于顯而易見的原因,轉(zhuǎn)換最初設(shè)計用于串行執(zhí)行的遺留應(yīng)用程序比設(shè)計用于并行執(zhí)行的新應(yīng)用程序要耗時和昂貴得多。大多數(shù)并行計算平臺都提供允許軟件開發(fā)人員修改應(yīng)用程序代碼以利用該平臺的 API。一些 API 比其他 API 更復(fù)雜,建議開發(fā)人員具有這些 API 的先前經(jīng)驗,以便與平臺有效集成。
通過并行計算實現(xiàn)軟件加速的方法
如前所述,商業(yè)并行計算平臺的定價在低端和高端產(chǎn)品之間存在很大差異。此外,高端系統(tǒng)需要相當(dāng)復(fù)雜的適配和管理,軟件許可和專業(yè)服務(wù)的綜合成本使價格差異更大,高端系統(tǒng)的成本有時比簡單系統(tǒng)高幾個數(shù)量級。
此外,在將現(xiàn)有應(yīng)用程序遷移到并行計算架構(gòu)時,重要的是要考慮適應(yīng)并行計算平臺(專業(yè)服務(wù)、編程和質(zhì)量保證)所涉及的遷移成本。因此,建議選擇一種方法,該方法將提供最少的功能集以充分滿足軟件項目的需求,而無需投資于不必要的昂貴的高端系統(tǒng)。
以下概述檢查了當(dāng)前的并行計算平臺類別,并解釋了每個類別與上一節(jié)中介紹的特征的關(guān)系。
使用多核和/或 GPGPU 進(jìn)行本地并行化
近年來,隨著強(qiáng)大的多核 CPU 和 GPGPU 的引入,在單機(jī)內(nèi)使用并行計算資源加速計算過程的潛力已顯著增長。雖然使用這些技術(shù)進(jìn)行本地并行化的能力仍然受到硬件規(guī)格的限制,但在許多情況下,它們提供了一種具有成本效益的低端替代全面分布式系統(tǒng)。并行本地化還可以解決投資某些分布式計算技術(shù)所需的虛擬化技術(shù)的需要。使用多核和/或 GPGPU 的好處包括:
多核利用率:可以修改 CPU 綁定比 I/O 綁定更多的應(yīng)用程序,以將不同的可執(zhí)行部分作為單獨(dú)的進(jìn)程并行運(yùn)行。當(dāng)今的現(xiàn)代操作系統(tǒng) (OS) 可以識別多個 CPU 內(nèi)核,并且可以自動管理并行進(jìn)程并將每個進(jìn)程發(fā)送到使用不同的內(nèi)核運(yùn)行,從而實現(xiàn)有效的并行化。在具有簡單并行分離潛力的應(yīng)用中,這通常是一種成功的方法。這種方法的主要問題是硬件限制,因為每個系統(tǒng)中的內(nèi)核數(shù)量是有限的,并且通常所有進(jìn)程只共享一個磁盤驅(qū)動器。但是,可以使用 IncrediBuild-XGE(圖 1)之類的系統(tǒng)來避免這些問題,該系統(tǒng)允許并行使用多個內(nèi)核的應(yīng)用程序自動使用本地網(wǎng)絡(luò)中的所有可用內(nèi)核。
GPGPU:這些組件正在迅速興起,成為使用 PC 和服務(wù)器中現(xiàn)有并行資源實現(xiàn)加速的另一種方式。GPU 最初設(shè)計用于與一般處理任務(wù)并行處理面向圖形的處理任務(wù),現(xiàn)在可用于處理非圖形處理任務(wù),硬件供應(yīng)商針對具有多個強(qiáng)大 GPU 的系統(tǒng)來推廣這種方法。基于 GPU 的并行計算在線程級別執(zhí)行(每個進(jìn)程有多個并行線程,每個線程使用不同的 GPU)并涉及使用專用 API,例如 OpenCL 和 CUDA,這需要專業(yè)知識,有時還需要大量的開發(fā)工作。
圖 1:使用進(jìn)程虛擬化將進(jìn)程分配到本地網(wǎng)絡(luò)上的空閑資源。
內(nèi)部(非通用)分布式計算實現(xiàn)
在涉及簡單并行化挑戰(zhàn)的場景中,其中目標(biāo)應(yīng)用程序高度孤立、令人尷尬地并行(或接近它),并且可以在不需要投資高端基礎(chǔ)設(shè)施的情況下獲得合理的加速結(jié)果,開發(fā)一個特定于應(yīng)用程序的應(yīng)用程序可能是可行的分布式計算實現(xiàn)。最簡單的示例將涉及在單獨(dú)的預(yù)定義服務(wù)器上并行運(yùn)行應(yīng)用程序的不同部分。目標(biāo)應(yīng)用程序的相對簡單性可能使創(chuàng)建專有系統(tǒng)所涉及的開發(fā)和維護(hù)成本與改編商業(yè)系統(tǒng)相當(dāng),甚至更便宜。
這種方法的另一個優(yōu)點(diǎn)是在開發(fā)專有系統(tǒng)時實現(xiàn)了高度的靈活性。然而,對于除了最簡單的場景之外的幾乎任何場景,在內(nèi)部開發(fā)并行計算實現(xiàn)可能會導(dǎo)致昂貴的持續(xù)維護(hù)工作和處理通用系統(tǒng)已經(jīng)解決的問題的復(fù)雜性,例如錯誤處理、可用性、可伸縮性、動態(tài)資源分配、管理要求和報告。
計算集群
計算集群是一組專用于共享應(yīng)用程序工作負(fù)載的服務(wù)器。集群中的服務(wù)器運(yùn)行同構(gòu)環(huán)境,包括最新版本的運(yùn)行時環(huán)境(應(yīng)用程序和二進(jìn)制依賴項)和對 I/O 文件的共享訪問。擁有諸如計算集群之類的專用計算環(huán)境消除了對虛擬化的需求(參見上一節(jié)關(guān)于高度隔離與環(huán)境相關(guān)的進(jìn)程),并提供了對計算集群的有效集中管理。這種方法的缺點(diǎn)是:
維護(hù)運(yùn)行該軟件的昂貴服務(wù)器的專用場會產(chǎn)生額外成本,并且不會利用連接到網(wǎng)絡(luò)的現(xiàn)有硬件中未使用的計算能力。
集群通常專用于單個應(yīng)用程序,不能支持多個應(yīng)用程序。
將現(xiàn)有應(yīng)用程序遷移到計算集群平臺通常涉及大量軟件開發(fā)以使應(yīng)用程序適應(yīng)使用集群 API。
基于集群的系統(tǒng)可以與高吞吐量存儲以及網(wǎng)絡(luò)硬件和軟件相結(jié)合,以優(yōu)化具有高端性能要求的數(shù)據(jù)綁定應(yīng)用程序的性能。
網(wǎng)格計算
網(wǎng)格計算在某種意義上類似于集群計算,它涉及一組致力于解決一個共同問題的計算機(jī),但不同于集群計算,它允許在同一個網(wǎng)格中混合異構(gòu)系統(tǒng)(不同的操作系統(tǒng)和硬件)。網(wǎng)格系統(tǒng)也不限制對單個應(yīng)用程序的使用,并且能夠?qū)B接到網(wǎng)格的系統(tǒng)進(jìn)行更分布式的控制和管理。最后,就所涉及的節(jié)點(diǎn)數(shù)量而言,網(wǎng)格允許最大規(guī)模的分布式系統(tǒng)架構(gòu),大型系統(tǒng)有時會達(dá)到數(shù)千個互連節(jié)點(diǎn)。
一些網(wǎng)格系統(tǒng)不僅利用專用服務(wù)器的綜合計算能力,還允許 PC 和工作站在運(yùn)行其他計算任務(wù)時為網(wǎng)格貢獻(xiàn)空閑的處理器周期。例如,使用 Microsoft Word 等文字處理工具編寫文檔的用戶可以同時將 80% 到 90% 的空閑處理能力貢獻(xiàn)給在網(wǎng)格上運(yùn)行的計算任務(wù)。這種同時利用可以顯著提高網(wǎng)格的潛在計算能力;然而,為了實現(xiàn)這一點(diǎn),在網(wǎng)格上運(yùn)行的應(yīng)用程序需要修改以使用網(wǎng)格系統(tǒng)的 API。應(yīng)用程序?qū)Νh(huán)境的依賴程度越高,應(yīng)用程序代碼的更改就越廣泛,以允許其利用非專用機(jī)器上的可用計算能力。
網(wǎng)格計算系統(tǒng)通常是具有最全面的特性集和功能的分布式并行處理產(chǎn)品。因此,它們在所需的專業(yè)知識方面也往往相當(dāng)復(fù)雜,無論是在開發(fā)工作(將現(xiàn)有代碼遷移到平臺 API)還是在持續(xù)的維護(hù)和管理工作中。因此,建議在考慮基于網(wǎng)格的方法時評估這些方面。
網(wǎng)格系統(tǒng)可以是商業(yè)的或開源的。開源系統(tǒng)成本較低,但往往會留下項目未涵蓋的開放端(調(diào)度、管理和物理實施方面),并且需要內(nèi)部開發(fā)或與項目開發(fā)社區(qū)合作。因此,仔細(xì)評估完成開源系統(tǒng)中缺少的組件所涉及的總擁有成本非常重要。一些商業(yè)網(wǎng)格計算產(chǎn)品提供了更完整的功能集。
網(wǎng)格計算產(chǎn)品往往處于并行分布式系統(tǒng)價格范圍的最高端。與基于集群的系統(tǒng)一樣,基于網(wǎng)格的系統(tǒng)可以與高端產(chǎn)品相結(jié)合,以優(yōu)化網(wǎng)絡(luò)和存儲瓶頸。
公共計算云
亞馬遜的 EC2 和微軟的 Azure 平臺等公共云是一種計算形式,在這種計算形式中,云用戶通過 Internet 從虛擬化計算場購買計算能力,而不是在存儲在組織位置的計算機(jī)上運(yùn)行的私有云。支付模式靈活,允許用戶根據(jù)需求增減算力,只為隨時間使用的算力付費(fèi)。這大大減少了對現(xiàn)場硬件和基礎(chǔ)設(shè)施進(jìn)行長期投資的需要。公有云傳統(tǒng)上用于業(yè)務(wù)應(yīng)用程序,強(qiáng)調(diào)負(fù)載平衡要求而不是加速計算過程,但公有云高性能計算系統(tǒng)越來越受歡迎。
公有云高性能計算的優(yōu)勢包括:
靈活的按需付費(fèi)許可
無需投資和維護(hù)專用硬件
不要求高端性能的應(yīng)用的有效選擇
缺點(diǎn)包括:
隨著時間的推移,服務(wù)成本可能會很高
當(dāng)敏感數(shù)據(jù)從組織的服務(wù)器傳輸?shù)?Internet 時會引發(fā)安全問題
在某些情況下,通過 WAN 連接上傳和下載大量數(shù)據(jù)的延遲可能會造成性能瓶頸
需要維護(hù)虛擬系統(tǒng)映像或修改平臺 API 的代碼或兩者兼而有之,這可能非常耗時且需要專業(yè)知識
創(chuàng)建對公共云供應(yīng)商和開放 Internet 連接可用性的依賴
應(yīng)對異質(zhì)性挑戰(zhàn)的新方法
在加速與計算環(huán)境交互的應(yīng)用程序(讀/寫文件、二進(jìn)制可執(zhí)行文件、動態(tài)鏈接庫以及讀取注冊表和環(huán)境值)時,傳統(tǒng)分布式計算系統(tǒng)面臨挑戰(zhàn)。
一種方法是專門為分布式應(yīng)用程序預(yù)裝所需的運(yùn)行時環(huán)境和文件的計算集群。這可以滿足應(yīng)用程序的要求,但需要對專用服務(wù)器進(jìn)行投資,并且不能利用連接到網(wǎng)絡(luò)的現(xiàn)有 PC 和工作站中可用的計算能力。它還需要維護(hù)集群并確保它始終運(yùn)行最新版本的運(yùn)行時和數(shù)據(jù)環(huán)境。
虛擬化允許服務(wù)器通過每次加載不同的系統(tǒng)映像來按需更改運(yùn)行時環(huán)境,從而提高可管理性并增加靈活性。但是,虛擬映像初始化形成了一個額外的瓶頸,并且與集群系統(tǒng)一樣,它不能有效地利用現(xiàn)有計算機(jī)上有時大量的空閑處理能力。
一些網(wǎng)格平臺提供的 API 在集成到應(yīng)用程序代碼時允許使用遠(yuǎn)程機(jī)器資源,而無需對這些機(jī)器進(jìn)行大量預(yù)配置。在某些情況下,這有效地使非專用機(jī)器能夠連接到電網(wǎng)并貢獻(xiàn)它們的空閑處理能力。但是,這僅適用于某些場景,并且在大多數(shù)情況下需要對應(yīng)用程序代碼進(jìn)行大量修改。
通過像 IncrediBuild-XGE 這樣的平臺進(jìn)行流程虛擬化是一種新的并行分布式計算方法,它通過將基于集群的系統(tǒng)的遷移和部署相對容易性與網(wǎng)格系統(tǒng)的計算強(qiáng)度和靈活性相結(jié)合來實現(xiàn)軟件加速。
使用進(jìn)程虛擬化,啟動器機(jī)器發(fā)送進(jìn)程以在連接到網(wǎng)絡(luò)的其他機(jī)器上并行執(zhí)行。然后,這些進(jìn)程將與當(dāng)時在操作系統(tǒng)上運(yùn)行的任何其他進(jìn)程一起在這些機(jī)器上運(yùn)行,但將在一個特殊的自包含虛擬環(huán)境中運(yùn)行,該環(huán)境完全模擬啟動器的環(huán)境,包括已安裝的應(yīng)用程序、文件系統(tǒng)、注冊表和環(huán)境。這些虛擬進(jìn)程將僅使用遠(yuǎn)程機(jī)器的空閑處理能力,以免干擾與網(wǎng)格活動無關(guān)的并發(fā)運(yùn)行進(jìn)程。資源協(xié)調(diào)模塊還確保隨時將進(jìn)程分配給系統(tǒng)中最強(qiáng)和最可用的節(jié)點(diǎn)。
由于虛擬化是在進(jìn)程級別執(zhí)行的,因此無需為平臺編寫代碼并將特定于平臺的 API 集成到應(yīng)用程序源代碼以將應(yīng)用程序遷移到網(wǎng)格。相反,IncrediBuild-XGE 使用一個緊湊的 XML 定義文件,該文件指定哪些進(jìn)程應(yīng)該被外包給網(wǎng)格上的遠(yuǎn)程計算機(jī),哪些應(yīng)該始終在啟動器上運(yùn)行。與需要大量修改源代碼的系統(tǒng)相比,這使得網(wǎng)格啟用速度明顯加快。例如,轉(zhuǎn)換已經(jīng)使用本地并行化(在單臺機(jī)器上并行 CPU 或內(nèi)核中運(yùn)行的進(jìn)程)的應(yīng)用程序通常需要不到一個小時的時間。由于不再需要維護(hù)虛擬映像庫或集群環(huán)境,因此也降低了持續(xù)維護(hù)成本。
最終結(jié)果是一個分布式處理應(yīng)用程序加速平臺,可有效加速新舊應(yīng)用程序,實現(xiàn)快速集成并降低維護(hù)成本。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
10871瀏覽量
211942 -
計算機(jī)
+關(guān)注
關(guān)注
19文章
7504瀏覽量
88056 -
虛擬化
+關(guān)注
關(guān)注
1文章
373瀏覽量
29808
發(fā)布評論請先 登錄
相關(guān)推薦
評論