用于在并行計算環(huán)境中開發(fā)軟件的方法
【專利摘要】本發(fā)明公開一種用于在并行計算環(huán)境中開發(fā)軟件的方法。所述方法包括以下步驟:開發(fā)所述軟件的順序?qū)崿F(xiàn)和并行實現(xiàn);以及對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果。
【專利說明】用于在并行計算環(huán)境中開發(fā)軟件的方法
【技術(shù)領(lǐng)域】
[0001]軟件開發(fā)過程已經(jīng)得到發(fā)展,從而在程序的整個生命周期內(nèi)提高軟件產(chǎn)品的生產(chǎn)率和質(zhì)量。隨著個人和商用計算處理器已從單核處理單元(CPU)發(fā)展成多核CPU和圖形處理單元(GPU),計算機軟件正從高度順序向高度并行過渡。
【背景技術(shù)】
[0002]圖1是具有單指令流和單數(shù)據(jù)流的順序處理計算機架構(gòu)10的示意性流程圖。順序處理是指在硬件架構(gòu)上執(zhí)行計算機代碼,在所述硬件架構(gòu)中,單處理器執(zhí)行來自指令池12的單指令流,以便操作存儲在數(shù)據(jù)池16中的數(shù)據(jù)。由軟件開發(fā)人員編程的軟件的順序?qū)崿F(xiàn)存在于指令池12中。當(dāng)程序執(zhí)行時,單串行指令流會從指令池12發(fā)送到單處理單元(PU) 14。PU14以單串行流的形式接收來自數(shù)據(jù)池16的數(shù)據(jù)。在作為計算機架構(gòu)的費林(Flynn)分類法要素的文獻中,順序處理架構(gòu)10的表示稱為單指令流單數(shù)據(jù)流(SISD)。此架構(gòu)最知名的實例便是二十世紀(jì)八十年代和九十年代的PC中使用的傳統(tǒng)單處理器機器。
[0003]圖2是具有單指令流和多數(shù)據(jù)流的并行處理計算機架構(gòu)20的示意性流程圖。并行處理是指其中可以同時執(zhí)行不同計算的任何計算機架構(gòu)。在一個并行處理架構(gòu)中,執(zhí)行并行計算機代碼,其中多個處理器執(zhí)行來自指令池22的單指令流,以便操作存儲在數(shù)據(jù)池26中的多個數(shù)據(jù)流。由軟件開發(fā)人員編程的軟件的并行實現(xiàn)存在于指令池22中。當(dāng)程序執(zhí)行時,單串行指令流會從指令池22發(fā)送到一組處理單元(PU) 24。PU24各自接收來自數(shù)據(jù)池26的數(shù)據(jù)流。在作為計算機架構(gòu)的費林分類法要素的文獻中,這種并行處理架構(gòu)20的表示稱為單指令流多數(shù)據(jù)流(SIMD)。SIMD架構(gòu)在GPU和大多數(shù)多核CPU中實施。
[0004]在典型的軟件開發(fā)過程中,程序員挑選處理環(huán)境并針對該選定的環(huán)境進行開發(fā)。因此,負責(zé)創(chuàng)建一個將在并行計算平臺上運行的應(yīng)用程序的開發(fā)人員將開發(fā)并行計算平臺上的軟件產(chǎn)品的并行實現(xiàn)。已知計算機程序的并行實現(xiàn)比順序?qū)崿F(xiàn)更難編寫,這是因為并發(fā)的計算增加了出現(xiàn)額外類型的軟件錯誤和資源管理問題的潛在可能性。例如,并行程序可能會遭受一種被稱為競態(tài)條件的故障類型,借此,歸因于多個處理器執(zhí)行的操作之間的臨界時間依賴性,計算機程序的并行實現(xiàn)便會出現(xiàn)異常行為。這些類型的錯誤可能極難跟蹤,因此,解決起來非常耗時。
[0005]軟件開發(fā)過程已經(jīng)得到發(fā)展,從而在程序的整個生命周期內(nèi)提高軟件產(chǎn)品的生產(chǎn)率和質(zhì)量。通常,這些方法以軟件開發(fā)生命周期模型為基礎(chǔ),并且為開發(fā)人員提供計劃,以便在開發(fā)和建立計算機程序時跟進。由于幾十年來在個人計算機行業(yè)中占優(yōu)勢的計算機硬件架構(gòu)具有串行性質(zhì),因此,順序處理已經(jīng)塑造了計算機科學(xué)家用來開發(fā)計算機代碼的軟件開發(fā)過程。圖形處理單元和多核中央處理單元(CPU)出現(xiàn)并可用之后,將并行計算帶入了商用和個人計算的主流。因此,對于并行軟件的開發(fā)和推廣而言,軟件開發(fā)過程不足且低效。
[0006]圖3是用于軟件開發(fā)的順序設(shè)計過程的示意性流程圖,該順序設(shè)計過程稱為瀑布模型30。瀑布模型30是眾所周知的設(shè)計過程,自硬件設(shè)計方法改編而成,并且用于軟件開發(fā),其中該過程的各個階段均在下一階段開始前完成。瀑布模型30的階段是需求32、設(shè)計34、實現(xiàn)36、檢驗38以及維護40。每個步驟連續(xù)連接到下一步驟,因此,整個開發(fā)過程在當(dāng)前步驟完成之后前進到下一步驟,并且通常會在隨后的步驟之前顯現(xiàn)先前的步驟,因而前進過程類似于瀑布。
[0007]用于軟件開發(fā)的瀑布模型30的初始步驟是需求階段32。需求階段32連續(xù)連接到設(shè)計階段34,因此,在設(shè)計階段34可以開始之前,需求階段32必須要先完成。設(shè)計階段34連續(xù)連接到實現(xiàn)階段36。實現(xiàn)階段36連續(xù)連接到檢驗階段38。檢驗階段38連續(xù)連接到維護階段40。維護階段40完成之后,所述開發(fā)過程便完成了。
[0008]通常,需求階段32的目標(biāo)是描述軟件的目的,以及開發(fā)出軟件需求說明。軟件需求說明是對軟件系統(tǒng)的完整描述,其中所述軟件系統(tǒng)定義了待開發(fā)軟件的功能需求和非功能需求。所述軟件的功能需求是一組描述軟件如何工作的輸入、行為和輸出。所述功能需求通常在需求階段32中記載為計算和用例。所述軟件的非功能需求描述所述軟件將呈現(xiàn)出的特性,例如,速度、穩(wěn)定性、容量,以及可移植性。所述非功能需求是將會決定所述系統(tǒng)架構(gòu)的標(biāo)準(zhǔn)。
[0009]設(shè)計階段34是計劃軟件解決方案的過程,所述軟件解決方案將滿足先前在需求階段32明確說明的目的和需求。在設(shè)計階段34期間,軟件開發(fā)人員將會考慮功能需求和非功能需求,并且開發(fā)出一個軟件模型,所述軟件模型將詳述待實施的軟件的基礎(chǔ)設(shè)計。軟件設(shè)計期間的典型考慮因素有相容性、調(diào)制性、可靠性、可用性、魯棒性等。所述軟件模型的基礎(chǔ)設(shè)計將描述一定的層次或框架,而所述層次或框架描述了所述軟件架構(gòu)。所述軟件架構(gòu)將描述各個軟件部件或模塊,以及所述模塊互連的方式。設(shè)計階段34的輸出是所述軟件模型的文獻資料,并且可能是明文描述、流程圖,或者采用如統(tǒng)一建模語言(UML)等建模語言的層次描述。
[0010]實現(xiàn)階段36是軟件開發(fā)周期中的階段,其中計算機代碼實際上被編寫。來自設(shè)計階段的技術(shù)描述被實現(xiàn)為軟件程序或部件。通過成為來自設(shè)計階段34的軟件設(shè)計的直接實現(xiàn),所述程序意圖符合需求階段32的軟件需求。
[0011]軟件開發(fā)周期的檢驗階段38是這樣的過程:其中對照軟件需求和設(shè)計來測試所實施的軟件,以證明所述程序已經(jīng)正確建立并且符合規(guī)范。軟件檢驗是一個有條不紊的過程,其中寫入一些測試,以證實軟件是按照說明執(zhí)行的。如果所述軟件并未通過確認測試,那么對所述程序進行調(diào)試,以找到并減少缺陷。瀑布開發(fā)過程30的檢驗階段38完成之后,安裝并維護所述軟件。在軟件系統(tǒng)已經(jīng)安裝在最終用戶平臺上之后,軟件開發(fā)過程的維護階段40出現(xiàn)。此時,最終用戶將會確認先前未知的錯誤或性能問題。通常,在使用現(xiàn)場系統(tǒng)時,隨著最終用戶的軟件需求發(fā)生改變,根據(jù)瀑布模型30開發(fā)的軟件系統(tǒng)開始演化。因此,維護階段40是這樣的階段:其中響應(yīng)于最終用戶的動態(tài)需要,軟件系統(tǒng)遠離根據(jù)瀑布模型30開發(fā)的軟件需求和設(shè)計。
【發(fā)明內(nèi)容】
[0012]本發(fā)明涉及一種用于在并行計算環(huán)境中開發(fā)軟件的方法。所述方法包括以下步驟:在順序處理環(huán)境中開發(fā)所述軟件的順序?qū)崿F(xiàn);檢驗所述軟件的所述順序?qū)崿F(xiàn)是否如預(yù)期那樣工作;在并行處理環(huán)境中開發(fā)所述軟件的所述順序?qū)崿F(xiàn)的并行實現(xiàn);以及對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果。
[0013]作為優(yōu)選,其進一步包括以下步驟:維護所述軟件的所述順序?qū)崿F(xiàn)和所述軟件的所述并行實現(xiàn)。
[0014]作為優(yōu)選,其進一步包括以下步驟:確定所述軟件的需求;以及確定所述軟件的設(shè)計;其中這些步驟在以下所述步驟之前執(zhí)行:在所述順序處理環(huán)境中開發(fā)所述軟件。
[0015]作為優(yōu)選,其中在并行處理環(huán)境中開發(fā)所述軟件的所述順序?qū)崿F(xiàn)的并行實現(xiàn)的所述步驟通常與以下所述步驟同時執(zhí)行:檢驗所述軟件的所述順序?qū)崿F(xiàn)是否如預(yù)期那樣工作。
[0016]作為優(yōu)選,其中所述并行處理環(huán)境包括至少一個GPU。
[0017]作為優(yōu)選,其中所述并行處理環(huán)境包括至少一個多核處理器。
[0018]作為優(yōu)選,其中所述順序處理環(huán)境包括至少一個CPU。
[0019]作為優(yōu)選,其中對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果的所述步驟包括以下步驟中的至少一者:(a)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行可信度測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較;(b)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個單元測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較;(c)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個邊角測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較;以及(d)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個邊緣測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較。
[0020]作為優(yōu)選,其進一步包括以下步驟:檢測所述軟件的運行時間狀態(tài)是否可以支持并行處理。
[0021]作為優(yōu)選,其進一步包括以下步驟:基于所述檢測所述軟件的運行時間狀態(tài)是否可以支持并行處理的步驟所給出的信號,在并行處理模式下運行所述軟件。
【專利附圖】
【附圖說明】
[0022]在附圖中:
[0023]圖1是具有單指令流和單數(shù)據(jù)流的現(xiàn)有技術(shù)順序處理計算機架構(gòu)的示意性流程圖。
[0024]圖2是具有單指令流和多數(shù)據(jù)流的現(xiàn)有技術(shù)并行處理架構(gòu)的示意性流程圖。
[0025]圖3是用于軟件開發(fā)的現(xiàn)有技術(shù)順序設(shè)計過程的示意性流程圖,所述順序設(shè)計過程稱為瀑布模型。
[0026]圖4是根據(jù)本發(fā)明的一項實施例的用于同時開發(fā)順序和并行軟件的并行設(shè)計過程的示意性流程圖。
[0027]圖5是根據(jù)本發(fā)明的一項實施例的用于對照順序代碼實現(xiàn)來檢驗并行代碼實現(xiàn)的示意性流程圖。
【具體實施方式】
[0028]在【背景技術(shù)】和以下描述中,出于解釋說明的目的,列出了許多具體細節(jié)來幫助徹底理解本說明書中描述的技術(shù)。然而,所屬領(lǐng)域的技術(shù)人員將明自,可以在沒有這些具體細節(jié)的情況下實踐示例性實施例。在其他情況下,圖示了結(jié)構(gòu)和裝置,以便于描述這些示例性實施例。
[0029]參考附圖來描述所述示例性實施例。這些附圖示出了實施本說明書中描述的模塊、方法或計算機程序產(chǎn)品的具體實施例的某些細節(jié)。然而,附圖不應(yīng)被解釋為施加了附圖中可能出現(xiàn)的任何限制。所述方法和計算機程序產(chǎn)品可以設(shè)在任何機器可讀媒體上,以完成它們的操作。所述實施例可以使用現(xiàn)有的計算機處理器來實施,或者由為此目的或另一目的而并入的專用計算機處理器來實施,或由硬連線系統(tǒng)來實施。
[0030]如上所述,本說明書中描述的實施例可以包括計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括用于在其上存儲或攜載機器可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的機器可讀媒體。此類機器可讀媒體可以是任何可用的媒體,所述媒體可以由通用或?qū)S糜嬎銠C或者具有處理器的其他機器訪問。例如,此類機器可讀媒體可以包括RAM、ROM、EPROM、EEPROM、CD-ROM或其他光盤存儲器、磁盤存儲器或其他磁存裝置,或者任何其他媒體,其中所述任何其他媒體可以用來以機器可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式攜載或存儲所需程序代碼,并且可以由通用或?qū)S糜嬎銠C或者具有處理器的其他機器訪問。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連接(硬連線、無線,或者硬連線或無線的組合)傳送或提供到機器時,所述機器會適當(dāng)?shù)貙⑺鲞B接視作機器可讀媒體。因此,任何此類連接均適當(dāng)?shù)胤Q為機器可讀媒體。上述內(nèi)容的組合也在機器可讀媒體的范圍內(nèi)。例如,機器可執(zhí)行指令包括指令和數(shù)據(jù),所述指令和數(shù)據(jù)會導(dǎo)致通用計算機、專用計算機或?qū)S锰幚頇C來執(zhí)行某一功能或功能的組合。
[0031]將在方法步驟的一般背景下描述實施例,所述方法步驟在一項實施例中可以由程序產(chǎn)品實施,所述程序產(chǎn)品包括程序代碼等機器可執(zhí)行指令,例如,所述機器可執(zhí)行指令采用在網(wǎng)絡(luò)環(huán)境中由機器執(zhí)行的程序模塊的形式。通常,程序模塊包括具有執(zhí)行特定任務(wù)的技術(shù)效果或者實施特定抽象數(shù)據(jù)類型的例行程序、程序、對象、部件、數(shù)據(jù)結(jié)構(gòu)等。機器可執(zhí)行指令、相關(guān)數(shù)據(jù)結(jié)構(gòu)以及程序模塊表示用于執(zhí)行本說明書中揭示的方法步驟的程序代碼的實例。此類可執(zhí)行指令或相關(guān)數(shù)據(jù)結(jié)構(gòu)的特定順序表示用于實施此類步驟中描述的功能的對應(yīng)行為的實例。
[0032]在網(wǎng)絡(luò)環(huán)境中,使用連接到一個或多個具有處理器的遠程計算機的邏輯連接,可以實踐實施例。邏輯連接可以包括局域網(wǎng)(LAN)和廣域網(wǎng)(WAN),此處所述LAN和WAN是實例且并不限于此。此類網(wǎng)絡(luò)環(huán)境在辦公室范圍或企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)中都很平常,并且可以使用多種多樣不同的通信協(xié)議。所屬領(lǐng)域的技術(shù)人員將了解,此類網(wǎng)絡(luò)計算環(huán)境通常涵蓋許多類型的計算機系統(tǒng)配置,包括個人計算機、手持式裝置、多處理器系統(tǒng)、基于微處理器或可編程的消費性電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計算機、大型計算機等等。
[0033]還可以在分布式計算環(huán)境中實踐實施例,其中由通過通信網(wǎng)絡(luò)(借助硬連線鏈路、無線鏈路,或者硬連線鏈路或無線鏈路的組合)鏈接起來的本地和遠程處理裝置來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程存儲裝置中。
[0034]用于實施全部或部分示例性實施例的示例性系統(tǒng)可能包括采用計算機形式的通用計算裝置,包括處理單元、系統(tǒng)存儲器以及系統(tǒng)總線,所述系統(tǒng)總線將包括所述系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)部件連接到所述處理單元。所述系統(tǒng)存儲器可以包括只讀存儲器(ROM)和隨機存取存儲器(RAM)。所述計算機還可以包括用于從磁硬盤中讀取和對其寫入的磁硬盤驅(qū)動器、用于從移動磁盤中讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器,以及用于從CD-ROM或其他光學(xué)媒體等移動光盤中讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器。所述驅(qū)動器及其相關(guān)機器可讀媒體提供對機器可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,以及用于計算機的其他數(shù)據(jù)的非易失性存儲。
[0035]所述實施例中揭示的方法的技術(shù)效果包括提高并行處理應(yīng)用程序開發(fā)的效率。而且,考慮到無論順序還是并行,多個硬件平臺上的應(yīng)用程序的開發(fā)人員均無法以其他方式使用調(diào)試選項,所述方法對現(xiàn)有軟件和硬件調(diào)試技術(shù)做出改進。通過自動選擇應(yīng)用程序的最佳運行時間狀態(tài),在現(xiàn)場平臺上實施此項技術(shù)將提高系統(tǒng)的魯棒性。
[0036]圖4示出了根據(jù)本發(fā)明的一項實施例的模型100,其中根據(jù)本說明書中提供的說明性實例,參考圖1到圖3圖示并描述的現(xiàn)有技術(shù)瀑布模型30已經(jīng)得到改進。模型100是用于在并行計算環(huán)境中開發(fā)軟件的軟件設(shè)計過程。該開發(fā)過程增加了稱為瀑布模型30的順序設(shè)計過程,所述瀑布模型通常用在順序處理軟件開發(fā)中。所增加的階段表明同時開發(fā)軟件程序的順序和并行實現(xiàn)。所述過程則表明用于對照順序?qū)崿F(xiàn)來檢驗并行實現(xiàn)的方法。
[0037]修正的瀑布模型100的階段是需求110、設(shè)計112、順序?qū)崿F(xiàn)114、順序檢驗116、并行實現(xiàn)118、對照順序?qū)崿F(xiàn)的并行檢驗120,以及維護122。需求階段110連續(xù)連接到設(shè)計階段112。設(shè)計階段112連續(xù)連接到順序?qū)崿F(xiàn)階段114。順序?qū)崿F(xiàn)階段114隨后連接到順序檢驗階段116和并行實現(xiàn)階段118。順序檢驗階段116和并行實現(xiàn)階段118均連接到對照順序?qū)崿F(xiàn)的并行檢驗階段120。對照順序?qū)崿F(xiàn)的并行檢驗階段120連續(xù)連接到維護階段122。
[0038]修正的瀑布模型100的需求階段110實施為瀑布模型30的需求階段32。除了瀑布模型30的設(shè)計階段34的過程之外,修正瀑布模型100的設(shè)計階段112包括開發(fā)人員的額外草率分析,以確定哪些(如果有的話)順序算法將被轉(zhuǎn)換成并行算法以用于并行實現(xiàn)。用于確定哪些(如果有的話)順序算法將被轉(zhuǎn)換成并行算法以用于并行實現(xiàn)的分析限于設(shè)計階段112,這是因為當(dāng)算法在計算機代碼中實施時,需求階段110的初始需求以及設(shè)計階段112的假設(shè)和需求可能改變。
[0039]設(shè)計階段112完成之后,順序?qū)崿F(xiàn)階段114開始。類似于瀑布模型30的實現(xiàn)階段36,順序?qū)崿F(xiàn)階段114是軟件開發(fā)周期中的階段,其中計算機代碼實際上被編寫。在順序?qū)崿F(xiàn)階段114中開發(fā)的計算機代碼是在順序處理環(huán)境中運行的軟件的順序?qū)崿F(xiàn)。諸如速度等在需求階段32中開發(fā)的非功能需求將無需在順序?qū)崿F(xiàn)階段114中得到滿足。在本發(fā)明的一項替代實施例中,順序算法和并行算法各自具有一組需求,而且順序?qū)崿F(xiàn)應(yīng)符合順序?qū)崿F(xiàn)所提及的需求。一旦順序?qū)崿F(xiàn)階段114完成,更徹底的分析會確定哪些順序算法將從并行化中受益最大。
[0040]順序檢驗階段116在順序?qū)崿F(xiàn)階段114完成之后開始。類似于瀑布模型30的檢驗階段38,順序檢驗階段116的目標(biāo)是檢驗軟件的順序?qū)崿F(xiàn)是否如預(yù)期那樣工作。
[0041]在順序檢驗階段116發(fā)生的同時,并行實現(xiàn)階段118可以開始。并行實現(xiàn)階段118的目標(biāo)是在并行處理環(huán)境中開發(fā)所述軟件的所述順序?qū)崿F(xiàn)的并行實現(xiàn)。所述并行處理環(huán)境可以包括主流硬件架構(gòu),例如,多核CPU和GPU。由于即使算法實現(xiàn)發(fā)生很小的變化部會導(dǎo)致并行實現(xiàn)發(fā)生實質(zhì)改變,因此,并行處理實現(xiàn)階段118應(yīng)直到順序?qū)崿F(xiàn)階段114結(jié)束之后才開始。
[0042]順序檢驗116和并行實現(xiàn)118階段都完成之后,并行檢驗120階段可以開始。并行檢驗階段120對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果。[0043]在所述軟件的所述并行實現(xiàn)已在并行檢驗階段120中檢驗之后,修正的瀑布模型100的軟件開發(fā)過程進入維護階段122。類似于瀑布模型30的維護階段40,修正的瀑布模型100的維護階段122是軟件項目從軟件開發(fā)過程到演化式開發(fā)的遷移,借此,最終用戶發(fā)現(xiàn)故障,并且響應(yīng)于這些故障和最終用戶需求的變化,軟件發(fā)生增量變化。
[0044]圖5示出了過程200,所述過程可以用來執(zhí)行修正的瀑布模型100的并行代碼檢驗階段120。在此過程200中,為了檢驗并行代碼實現(xiàn),可以開發(fā)一系列測試并由軟件開發(fā)人員來執(zhí)行這些測試,以將輸出和結(jié)果與先前檢驗的軟件的順序?qū)崿F(xiàn)進行比較。所述過程可以從并行實現(xiàn)的可信度測試210開始。隨后,所述可信度測試的結(jié)果可以與順序?qū)崿F(xiàn)218的結(jié)果相比較。成功比較結(jié)果之后,所述過程可以繼續(xù)并行實現(xiàn)的單元測試212。隨后,所述單元測試的結(jié)果可以與順序?qū)崿F(xiàn)218的結(jié)果相比較。成功比較結(jié)果之后,所述過程可以繼續(xù)并行實現(xiàn)的邊角測試(Cornertesting)214。隨后,所述邊角測試的結(jié)果可以與順序?qū)崿F(xiàn)218的結(jié)果相比較。成功比較結(jié)果之后,所述過程可以繼續(xù)并行實現(xiàn)的邊緣測試216。隨后,所述邊緣測試的結(jié)果可以與順序?qū)崿F(xiàn)218的結(jié)果相比較。
[0045]并行實現(xiàn)檢驗開始之后,軟件開發(fā)人員可以開發(fā)并執(zhí)行可信度測試210。可信度測試通常是用來快速檢驗軟件實現(xiàn)的整體功能的非正式測試方法。由于可能已經(jīng)針對順序?qū)崿F(xiàn)在順序檢驗階段116中開發(fā)了一系列測試,因此,可信度測試210的結(jié)果可以與針對順序檢驗階段116開發(fā)的類似測試的結(jié)果相比較。
[0046]在已經(jīng)對照順序?qū)崿F(xiàn)的結(jié)果檢驗了可信度測試的結(jié)果之后,軟件開發(fā)人員可以開發(fā)并執(zhí)行單元測試212。單元測試是檢驗特定軟件代碼段的功能的測試軟件部件方法。由于可能已經(jīng)針對順序?qū)崿F(xiàn)在順序檢驗階段116中開發(fā)了一系列單元測試,因此,單元測試212的結(jié)果可以與針對順序檢驗階段116開發(fā)的類似測試的結(jié)果相比較。
[0047]在已經(jīng)對照順序?qū)崿F(xiàn)的結(jié)果檢驗了單元測試的結(jié)果之后,軟件開發(fā)人員可以開發(fā)并執(zhí)行邊角測試214。邊角測試是測試反常情況的方法,其中軟件必須處理僅在正常操作參數(shù)之外的輸入。由于可能已經(jīng)針對順序?qū)崿F(xiàn)在順序檢驗階段116中開發(fā)了一系列邊角測試,因此,邊角測試214的結(jié)果可以與針對順序檢驗階段116開發(fā)的類似測試的結(jié)果相比較。
[0048]在已經(jīng)對照順序?qū)崿F(xiàn)的結(jié)果檢驗了邊角測試的結(jié)果之后,軟件開發(fā)人員可以開發(fā)并執(zhí)行邊緣測試216。邊緣測試是測試反常情況的方法,其中軟件必須處理一些輸入,而在這些輸入中只有單個參數(shù)在正常操作參數(shù)之外。由于可能已經(jīng)針對順序?qū)崿F(xiàn)在順序檢驗階段116中開發(fā)了一系列邊緣測試,因此,邊緣測試216的結(jié)果可以與針對順序檢驗階段116開發(fā)的類似測試的結(jié)果相比較。
[0049]為了對照軟件的順序?qū)崿F(xiàn)的結(jié)果來檢驗軟件的并行實現(xiàn)的結(jié)果,軟件開發(fā)人員可以對軟件的并行實現(xiàn)的結(jié)果執(zhí)行可信度測試,并且將所述結(jié)果與得自順序檢驗階段的順序?qū)崿F(xiàn)的結(jié)果進行比較。此外,開發(fā)人員將對軟件的并行實現(xiàn)的結(jié)果執(zhí)行單元測試、邊角測試以及邊緣測試,并且將所述結(jié)果與得自順序檢驗階段的順序?qū)崿F(xiàn)的結(jié)果進行比較。
[0050]將修正的瀑布方法100用作并行軟件開發(fā)工具,通過讓開發(fā)人員確信并快速地測試并行實現(xiàn),軟件開發(fā)人員可以開發(fā)出更具靈活性的并行實現(xiàn)。作為軟件開發(fā)工具,根據(jù)本發(fā)明的一項實施例的修正的瀑布方法100允許在順序檢驗階段116完成之后自動生成多個不同的并行測試場景。由于眾所周知,并行實現(xiàn)的可信度測試比較困難且耗時,因此,根據(jù)本發(fā)明的一項實施例的修正瀑布方法100為并行實現(xiàn)提供一種快速而可靠的方式來審查結(jié)果,方法是與順序檢驗階段116中的先前審查的結(jié)果進行比較。
[0051]通過在將修正的瀑布方法100用作并行軟件開發(fā)工具的情況下開發(fā)軟件,用于并行處理的硬件架構(gòu)的性能測試和現(xiàn)場調(diào)試得到大大提高。在并行實現(xiàn)與順序?qū)崿F(xiàn)之間轉(zhuǎn)換所部署的軟件允許對硬件架構(gòu)進行基準(zhǔn)檢查。順序?qū)崿F(xiàn)可對硬件的速度進行基線評估。使用順序?qū)崿F(xiàn)基準(zhǔn),開發(fā)人員可以在多個不同的硬件架構(gòu)上對并行實現(xiàn)的基準(zhǔn)進行知情比較(informedcomparisons)。例如,開發(fā)人員或最終用戶可以將若干個不同的GPU卡換成硬件系統(tǒng),并且收集性能指標(biāo)以用于比較。此外,所述開發(fā)人員或最終用戶可以將來自所述GPU卡和集成有CPU的硬件系統(tǒng)的性能指標(biāo)進行比較。
[0052]同樣,通過用修正的瀑布方法100開發(fā)軟件,現(xiàn)場調(diào)試可以得到提高,這是因為如果現(xiàn)場出現(xiàn)錯誤,那么開發(fā)人員可以將軟件的順序?qū)崿F(xiàn)換成并行實現(xiàn)。例如,GPU故障的隔離方式可以是在所述GPU上運行順序和并行代碼,其中針對順序代碼選擇單獨的存儲地址,以便隔離所述GPU中的處理鏈。轉(zhuǎn)換所述實現(xiàn)可以用來隔離硬件或軟件故障等錯誤。例如,開發(fā)人員確定程序在第一硬件配置下工作,而并不在第二硬件配置下工作。由于能夠在兩個配置之間轉(zhuǎn)換,開發(fā)人員可以在代碼中快速隔離錯誤的具體功能和目標(biāo)位置。
[0053]修正的瀑布方法100作為并行軟件開發(fā)工具的另一益處在于軟件產(chǎn)品的部署。由于開發(fā)過程造成軟件的并行和順序?qū)崿F(xiàn),因此,平臺魯棒性增加。所述軟件開發(fā)工具可以經(jīng)配置以檢測所述軟件的運行時間狀態(tài)是否可支持平臺上的并行處理實現(xiàn),其中所述并行處理實現(xiàn)是已經(jīng)針對所述平臺部署的。例如,所述軟件開發(fā)工具可以將順序?qū)崿F(xiàn)部署在具有單核CPU的系統(tǒng)上,而將并行實現(xiàn)部署在基于GPU的系統(tǒng)上。
[0054]修正的瀑布方法100的另一益處在于,在順序?qū)崿F(xiàn)和并行實現(xiàn)之前,可高度重用需求和檢驗階段的結(jié)果。由于無需單獨針對每個所得實現(xiàn)逐步通過這些階段,因此,開發(fā)人員可以節(jié)省時間并且更快地開發(fā)功能實現(xiàn)。類似地,用一組確認結(jié)果來比較并檢驗兩個實現(xiàn)也具有省時的益處。
[0055]本說明書使用了各種實例來揭示本發(fā)明,包括最佳模式,同時也讓所屬領(lǐng)域的任何技術(shù)人員能夠?qū)嵺`本發(fā)明,包括制造并使用任何裝置或系統(tǒng),以及實施所涵蓋的任何方法。本發(fā)明的保護范圍由權(quán)利要求書界定,并可包括所屬領(lǐng)域的一般技術(shù)人員想出的其他實例。如果其他此類實例的結(jié)構(gòu)要素與權(quán)利要求書的字面意思相同,或如果此類實例包括的等效結(jié)構(gòu)要素與權(quán)利要求書的字面意思無實質(zhì)差別,則此類實例也屬于權(quán)利要求書的范圍。
【權(quán)利要求】
1.一種用于在并行計算環(huán)境中開發(fā)軟件的方法,所述方法包括以下步驟: 在順序處理環(huán)境中開發(fā)所述軟件的順序?qū)崿F(xiàn); 檢驗所述軟件的所述順序?qū)崿F(xiàn)是否如預(yù)期那樣工作; 在并行處理環(huán)境中開發(fā)所述軟件的所述順序?qū)崿F(xiàn)的并行實現(xiàn); 對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果。
2.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其進一步包括以下步驟:維護所述軟件的所述順序?qū)崿F(xiàn)和所述軟件的所述并行實現(xiàn)。
3.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其進一步包括以下步驟: 確定所述軟件的需求;以及 確定所述軟件的設(shè)計; 其中這些步驟在以下所述步驟之前執(zhí)行:在所述順序處理環(huán)境中開發(fā)所述軟件。
4.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其中在并行處理環(huán)境中開發(fā)所述軟件的所述順序?qū)崿F(xiàn)的并行實現(xiàn)的所述步驟通常與以下所述步驟同時執(zhí)行:檢驗所述軟件的所述順序?qū)崿F(xiàn)是否如預(yù)期那樣工作。
5.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其中所述并行處理環(huán)境包括至少一個GPU。
6.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其中所述并行處理環(huán)境包括至少一個多核處理器。
7.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其中所述順序處理環(huán)境包括至少一個CPU。
8.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其中對照所述軟件的所述順序?qū)崿F(xiàn)的結(jié)果來檢驗所述軟件的所述并行實現(xiàn)的結(jié)果的所述步驟包括以下步驟中的至少一者: (a)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行可信度測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較; (b)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個單元測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較; (c)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個邊角測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較;以及 (d)對所述軟件的所述并行實現(xiàn)的所述結(jié)果執(zhí)行至少一個邊緣測試,并且將所述結(jié)果與所述順序?qū)崿F(xiàn)的所述結(jié)果相比較。
9.根據(jù)權(quán)利要求1所述的用于開發(fā)軟件的方法,其進一步包括以下步驟:檢測所述軟件的運行時間狀態(tài)是否可以支持并行處理。
10.根據(jù)權(quán)利要求9所述的用于開發(fā)軟件的方法,其進一步包括以下步驟:基于所述檢測所述軟件的運行時間狀態(tài)是否可以支持并行處理的步驟所給出的信號,在并行處理模式下運行所述軟件。
【文檔編號】G06F9/44GK103593179SQ201310357753
【公開日】2014年2月19日 申請日期:2013年8月16日 優(yōu)先權(quán)日:2012年8月17日
【發(fā)明者】E.D.比勒, B.T.奧基平蒂 申請人:通用電氣航空系統(tǒng)有限責(zé)任公司