圖示一:英特爾公司總裁保羅.歐德寧展示80個內(nèi)核的模型
這聽起來真是個讓人難以置信的佳訊—從表面上看會用無窮無盡的性能可供日益復雜的應(yīng)用程序來運用。面對這個偉大的進步,讓我們想象一下目前的應(yīng)用程序運行速度會快到何種程度!看到這里你會疑問這絕不是件輕而易舉之事。確實如此。
設(shè)計一款在多核處理器上運行的應(yīng)用程序相比單核處理器要困難的多。要想多重應(yīng)用軟件能輕易的在不同的內(nèi)核上運行,你就必須精心設(shè)計出利用多核技術(shù)的編碼應(yīng)用程序來。這也意味著現(xiàn)有的應(yīng)用軟件在多核處理器上運行時多數(shù)都未能從性能的提升中獲益。
設(shè)計并行代碼
并行應(yīng)用軟件的設(shè)計面臨的首個關(guān)鍵性挑戰(zhàn)就是鑒別程序中那些部分能夠真正彼此平行運行,然后用代碼來執(zhí)行這些部分。每一個代碼都能和線程的其他部分并行運行。因此,一款完整的并行應(yīng)用程序也就是多線程的運用。
過去,以文本為基礎(chǔ)的程序設(shè)計者們總是習慣使用應(yīng)用程序接口諸如OpenMP指令或者可移植操作系統(tǒng)接口(POSIX)來對應(yīng)用軟件中的線程加以定義。因為長期以來以文本為基礎(chǔ)的程序設(shè)計者們總是根深蒂固的認為在多線程代碼實現(xiàn)虛擬化并行是非常困難的。而另一方面,通過NI LabVIEW的圖形化開發(fā)環(huán)境,代碼編譯者們就能輕易的實現(xiàn)并行應(yīng)用程序的虛擬和設(shè)計。另外,LabVIEW工具還能自動為代碼的并行部分產(chǎn)生線程。所以對這項設(shè)計的背景知之甚少的工程師和科學家們,就要把更多的時間和精力放在如何解決這個問題上,而不是成天為應(yīng)用軟件的低效運行而大費腦筋。
圖示二:文本語言和LabVIEW圖形環(huán)境下的多線程對比
實現(xiàn)線程同步
多核程序設(shè)計面臨的第二個挑戰(zhàn)就是線程同步。面對應(yīng)用軟件中無數(shù)的線程,你必須確保所有的線程都能互相配合。舉例來說,如果兩個或者更多內(nèi)核嘗試同時訪問存儲單元,就會導致數(shù)據(jù)紊亂。因此,對一款應(yīng)用軟件中的代碼產(chǎn)生沖突的可能性加以細致的鑒別是一項艱巨的任務(wù)。
利用LabVIEW的圖形化開發(fā)環(huán)境創(chuàng)建一個結(jié)構(gòu)圖,你就能夠很快完成這個任務(wù)而無需考慮線程同步的問題。圖示三顯示了一款應(yīng)用軟件中圖形代碼的兩個并行部分在讀取文件時要訪問同一個硬盤空間的情形。LabVIEW就能自動運行線程同步。
圖示三:LabVIEW圖形環(huán)境下線程自動同步的簡單演示
調(diào)試
多數(shù)的應(yīng)用程序在首次執(zhí)行任務(wù)時都無法完美的履行職能。無論是單核還是多核應(yīng)用軟件都存在這樣的問題。從邏輯上說,代碼的任何部分都可能產(chǎn)生功能誤差,這時你就必須依靠不斷升級的調(diào)試工具來糾正這些誤差。
調(diào)試過程也是多核應(yīng)用軟件面臨的一個挑戰(zhàn)。你不僅要對同時運行的兩部分代碼進行跟蹤,還要確定這每個代碼使用的是那個處理器。除此之外,如果你經(jīng)常設(shè)計多線程應(yīng)用軟件,你還必須解決線程交叉和枯竭方面的問題,這些在調(diào)試過程中都需要進行認真的甄別。
LabVIEW包含的幾個特性能大大簡化多核應(yīng)用軟件的調(diào)試過程。特別是你可以運用高亮顯示執(zhí)行的特點來方便快捷的對程序的并行執(zhí)行虛擬化(LabVIEW本身就是以數(shù)據(jù)流為基礎(chǔ)的)。舉例來說,仔細觀察圖示四中的演示,當高亮顯示打開時,你就能輕易的對代碼執(zhí)行的并行部分進行虛擬化了。
圖示四:LabVIEW開發(fā)環(huán)境下制圖高亮顯示
除此之外,LabVIEW的實時模塊還能提供多核處理器準確的執(zhí)行情況和廣泛的調(diào)試信息。目前的最新版本LabVIEW8.5實時執(zhí)行跟蹤工具包能對線程運行的處理器虛擬化,還能快速識別線程枯竭和交叉的問題。
圖示五:LabVIEW8.5跟蹤工具包
總結(jié)
由此我們可以得出結(jié)論,多核應(yīng)用程序的設(shè)計者們必須充分重視多線程的挑戰(zhàn)。這些挑戰(zhàn)不僅限于我們上文談及的并行應(yīng)用程序體系架構(gòu),線程同步和調(diào)試這幾個方面。隨著處理器內(nèi)核數(shù)量的不斷增加,在多線程應(yīng)用軟件中的正確運用并行設(shè)計技術(shù)也越來越重要了。