国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法

      文檔序號:6378522閱讀:382來源:國知局
      專利名稱:并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計算機技術(shù)領(lǐng)域,更具體地說,本發(fā)明涉及一種針對并行語言、編譯器及運行時庫的并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法。
      背景技術(shù)
      隨著,高性能計算機規(guī)模的日趨龐大,云計算、網(wǎng)格計算、物聯(lián)網(wǎng)等新行業(yè)領(lǐng)域的興起,并行語言向深度和廣度的發(fā)展越來越顯著,發(fā)展?jié)摿υ絹碓酱?,對國防、民生諸多領(lǐng)域的影響也越來越突出。并行語言是開發(fā)和設(shè)計并行程序的唯一手段。同時,由于并行程序設(shè)計的特點,并行計算發(fā)展的歷史淵源,并行語言在并行程序的開發(fā)、設(shè)計和運行環(huán)境等方面存在諸多問題,也給其測試帶來較大難題,嚴重制約了并行計算的發(fā)展。
      在并行程序開發(fā)與設(shè)計方面問題①并行程序設(shè)計不僅包含了串行程序設(shè)計,而且還包含了更多的富有挑戰(zhàn)性的并行問題;②串行程序設(shè)計僅有一個普遍被接受的馮.諾依曼模型,而并行計算模型雖有很多,但沒有一個被共同認可;③并行程序設(shè)計還受到特定運行時環(huán)境的影響。在并行程序的運行環(huán)境方面問題①并行程序的運行邏輯遠比串行程序復(fù)雜,對運行環(huán)境的要求遠比串行程序高得多、復(fù)雜得多;②運行環(huán)境的缺陷直接威脅到并行程序運行的正確性。目前,國外主流的高性能計算機研究公司或機構(gòu)有IBM、惠普、NEC、Cray等。并行編程模型/語言有UPC、MPI、X10、Chapel、OpenMP, OpenCL、PVM、HPF等,其主要是對標(biāo)準(zhǔn)C^Fortran等串行語言的擴展。這兩年,也有公司在研究基于Java、C#等語言的并行編程。在國內(nèi),主要有“天河”、“曙光”、“神威”三大系列高性能計算機系統(tǒng),均延承或自主開發(fā)了相應(yīng)的并行編程模型/語言。在并行語言測試方面,以開發(fā)并行模型/語言為主導(dǎo)的各家公司,也相繼對傳統(tǒng)串行調(diào)試工具或測試模型進行了擴展,如H)B、JUnit的并行擴展等,以及基于特定并行模型/語言的測試包,如UUTF、MPICH-Test等。然而對并行語言進行測試卻諸多不足①起步較晚,測試多數(shù)是針對特定的并行語言,且受特定的并行程序開發(fā)與設(shè)計方法限制;②由于并行計算模型、并行體系結(jié)構(gòu)不同和高性能計算機“代”的更迭,測試沒有系統(tǒng)性和規(guī)范性,也缺乏方法和手段,更缺乏有效的測試工具并行執(zhí)行存在隨機性,有時并行方面的缺陷需要運行很多遍才會暴露出來;④并行程序運行時監(jiān)控困難,綜合運行環(huán)境因素的并行程序運行時監(jiān)控更難;⑤并行規(guī)模因素對測試的影響,也是不容忽視的問題。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中存在上述缺陷,提供一種基于配置文件和樣本并行源代碼的自動化并行源代碼生成、編譯及驅(qū)動執(zhí)行的并行語言、編譯器及運行時庫測試方法,該方法相對于基于特定并行模型/語言的測試方法來說,具有較強的系統(tǒng)性、可擴展性和普適性。根據(jù)本發(fā)明,提供了一種并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法,其包括測試流程控制模塊、生成用例并行源代碼模塊以及運行和監(jiān)控用例并行作業(yè)模塊;其中,所述生成用例并行源代碼模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置得到并行源代碼生成配置和并行編譯選項配置,接受測試流程控制模塊傳遞的全局并行編譯選項,生成所需的用例并行源代碼和Makefile文件;并且,所述運行和監(jiān)控用例并行作業(yè)模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置以得到并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置,接受所述測試流程控制模塊傳遞的全局并行作業(yè)提交選項和并行作業(yè)狀態(tài)監(jiān)控選項,運行和控制并行作業(yè)運行。優(yōu)選地,所述測試流程控制模塊包括第一主控步驟,用于進行測試運行環(huán)境的分析和配置,確定測試用例列表或測試用例目錄;第二主控步驟,用于分析測試用例列表或遍歷測試用例配置目錄,確定需要測試的用例集合;第三主控步驟,用于調(diào)用生成用例并行源 代碼模塊,逐次解析測試用例配置和生成所需的用例并行源代碼和Makefile文件;第四主控步驟,用于利用第三主控步驟生成的Makefile文件,驅(qū)動并行編譯器對第三主控步驟生成的用例并行源代碼進行編譯和生成并行目標(biāo)代碼;第五主控步驟,用于調(diào)用運行和監(jiān)控用例并行作業(yè)模塊;判斷步驟,用于在第五主控步驟結(jié)束后判斷是否還有其他測試用例未執(zhí)行,若第五主控步驟結(jié)束后還有其他測試用例未執(zhí)行,則轉(zhuǎn)至第二主控步驟并繼續(xù)進行測試下一個用例;若沒有需要執(zhí)行的測試用例,則轉(zhuǎn)至第六主控步驟;第六主控步驟,用于分析第四主控步驟的并行編譯過程日志,分析第五主控步驟的并行作業(yè)運行過程日志和并行作業(yè)運行結(jié)果,并與預(yù)期結(jié)果進行比對,以確定并行編譯器的編譯過程是否符合預(yù)期結(jié)果,以及確定并行作業(yè)在并行程序運行環(huán)境下的運行結(jié)果是否符合預(yù)期結(jié)果。優(yōu)選地,所述生成用例并行源代碼模塊包括第一生成步驟,用于對測試用例配置進行分析,獲取構(gòu)建并行源代碼所需的并行源代碼生成配置和構(gòu)建Makefile所需的并行編譯選項配置;第二生成步驟,用于從并行源代碼生成配置中獲取FRAME信息,從基礎(chǔ)架構(gòu)樣本中找出相匹配的.c文件,并拷貝至臨時工作目錄中命名為Main, c ;第三生成步驟,用于從并行源代碼生成配置中獲取INCLUDE信息,從測試場景樣本中查找匹配的測試場景定義、測試輔助函數(shù)庫,并將其拷貝至臨時工作目錄,然后實例化第二生成步驟中Main, c的 include定義;第四生成步驟,用于從并行源代碼生成配置中獲取DATA信息,將第三生成步驟中的測試場景相關(guān)源代碼和處理后的Main, c中的變量類型宏定義實例化為具體的基本變量類型或并行語言擴展的共享、SIMD變量類型,將編譯指示宏定義實例化為具體的編譯指示宏定義;第五生成步驟,用于從并行源代碼生成配置中獲取MAKE信息,從Makefile樣本中查找匹配的Makefile文件,拷貝至臨時工作目錄,然后將Makefile中TARGET實例化為測試用例英文名,SOURCE實例化為第三生成步驟中的測試場景相關(guān).c文件和Main, c,HEADER實例化為第三生成步驟中的測試場景相關(guān).h文件,接著根據(jù)全局并行編譯選項和用例并行編譯選項配置,并將Makefile中的CFLAGS和LDFLAGS實例化為具體的編譯和鏈接選項。優(yōu)選地,所述運行和監(jiān)控用例并行作業(yè)模塊包括第一步驟,用于對測試用例配置進行分析,獲取并行作業(yè)提交所需的并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置;第二步驟,用于根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,從輔助數(shù)據(jù)目錄中拷貝或運行輔助腳本新建或運行系統(tǒng)命令新建并行作業(yè)所需數(shù)據(jù)文件;第三步驟,用于根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,在運行節(jié)點中分發(fā)和部署并行作業(yè)所需的并行目標(biāo)代碼、并行作業(yè)數(shù)據(jù)文件;第四步驟,用于根據(jù)全局并行作業(yè)提交選項和用例并行作業(yè)運行配置,實例化并行作業(yè)提交程序的運行選項和并行目標(biāo)代碼的運行參數(shù),并驅(qū)動并行作業(yè)提交程序提交運行用例并行目標(biāo)代碼;第五步驟,用于根據(jù)并行作業(yè)狀態(tài)監(jiān)控選項,在預(yù)置的時間間隔內(nèi)查看并行作業(yè)的運行狀態(tài)是否為正常、并行作業(yè)運行結(jié)果文件是否有新記錄等;并行作業(yè)的運行狀態(tài)異?;蜻\行結(jié)果文件超出預(yù)置查看次數(shù)仍未更新時,申請結(jié)束并行作業(yè);并行作業(yè)結(jié)束后,根據(jù)退出狀態(tài)和結(jié)果文件的完整性,驗證并行作業(yè)是否為正常退出,若異常退出則轉(zhuǎn)至第四步驟重新提交,若正常退出或重新提交超出預(yù)置次數(shù)則轉(zhuǎn)至第六步驟;第六步驟,用于從運行節(jié)點中收集和匯總并行作業(yè)運行結(jié)果。本發(fā)明提供的方法相對于基于特定并行模型/語言的測試方法來說,具有較強的系統(tǒng)性、可擴展性和普適性。該方法通過將具體的并行語言在基礎(chǔ)語言基礎(chǔ)上的語法擴展、并行運行時庫API等可測試特性,分解為較為通用的基礎(chǔ)框架和特定可參數(shù)化的測試場景,并通過測試用例配置進行實例化,以實現(xiàn)測試用例并行源代碼的生成。對于不同的并行模型/語言來說,僅需要分析共性測試場景的差異性和補充特性測試場景,并通過測試用例配置及其集合來構(gòu)建特定并行模型/語言相適宜的測試。并且,本發(fā)明提供的方法可以提供測試用例設(shè)計的可復(fù)用性,針對并行語言、編譯器及運行時庫的并行特性進行參數(shù)化,將測試用例設(shè)計集中于可復(fù)用的測試場景設(shè)計及對測試場景的參數(shù)化配置,提升了測試用例設(shè)計的效率和價值?!?br>

      結(jié)合附圖,并通過參考下面的詳細描述,將會更容易地對本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點和特征,其中圖I示意性地示出了根據(jù)本發(fā)明實施例的測試流程控制示意圖。圖2示意性地示出了根據(jù)本發(fā)明實施例的生成用例并行源代碼示意圖。圖3示意性地示出了根據(jù)本發(fā)明實施例的運行和監(jiān)控用例并行作業(yè)示意圖。圖4示意性地示出了根據(jù)本發(fā)明實施例的UPC語言示例的并行源代碼樣本。圖5示意性地示出了根據(jù)本發(fā)明實施例的并行源代碼生成配置。需要說明的是,附圖用于說明本發(fā)明,而非限制本發(fā)明。。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號。
      具體實施例方式為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實施例和附圖對本發(fā)明的內(nèi)容進行詳細描述。本發(fā)明實施例提出了基于配置文件和樣本程序自動生成待測并行源代碼方法,為測試和驗證并行語言、編譯器和運行時庫提供了一種靈活、可配置的測試框架(如圖I所示)。該方法通過對并行編譯選項,對并行語言擴展的變量類型、并行編譯指示,對并行運行時庫的API (Application Programming Interface,應(yīng)用程序編程接口)參數(shù)類型、并行操作范圍等進行參數(shù)化配置,生成測試并行編譯器的正向和反向用例源代碼(如圖2所示)。該方法通過對并行作業(yè)規(guī)模、并行作業(yè)運行參數(shù)、并行作業(yè)狀態(tài)監(jiān)控等進行參數(shù)化,運行和控制并行作業(yè)運行(如圖3所示)。在根據(jù)本發(fā)明實施例中,可首先執(zhí)行自動化的測試流程控制過程的處理;隨后執(zhí)行針對可參數(shù)化的測試場景利用配置信息自動生成并行語言源代碼的處理;然后執(zhí)行自動化的并行作業(yè)運行和監(jiān)控過程的處理。由此,根據(jù)本發(fā)明實施例的針對并行語言、編譯器及運行時庫的并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法包括測試流程控制模塊、生成用例并行源代碼模塊以及運行和監(jiān)控用例并行作業(yè)模塊。 ( I)測試流程控制模塊為測試的主控模塊。第一主控步驟Sll是進行測試運行環(huán)境的分析和配置,確定測試用例列表或測試用例目錄;具體地說,測試用例列表或測試用例目錄包括測試用例配置目錄、測試執(zhí)行日志目錄、測試臨時工作目錄、樣本源代碼目錄(基礎(chǔ)架構(gòu)樣本、測試場景樣本、Makefile樣本)、輔助腳本目錄、輔助數(shù)據(jù)目錄、并行編譯的全局編譯選項、并行作業(yè)的全局作業(yè)提交選項、是否保存測試中間數(shù)據(jù)等。第一主控步驟Sll中,測試中間數(shù)據(jù)主要有并行編譯過程信息(并行源代碼、生成的并行目標(biāo)碼、編譯過程日志)、并行作業(yè)運行信息(并行目標(biāo)碼、所需數(shù)據(jù)文件、運行結(jié)果、運行過程日志)。第二主控步驟S12是分析測試用例列表或遍歷測試用例配置目錄,確定需要測試的用例集合。第三主控步驟S13是調(diào)用生成用例并行源代碼模塊,逐次解析測試用例配置和生成所需的用例并行源代碼和Makefile文件。第四主控步驟S14是利用第三主控步驟S13生成的Makefile文件,驅(qū)動并行編譯器對第三主控步驟S13生成的用例并行源代碼進行編譯和生成并行目標(biāo)代碼。同時,在第四主控步驟S14中,可根據(jù)需要,將本次編譯的用例并行源代碼、生成的并行目標(biāo)代碼和并行編譯過程日志打包存儲至測試執(zhí)行日志目錄,以及生成簡要的并行編譯過程測試日志信
      肩、O第五主控步驟S15是調(diào)用運行和監(jiān)控用例并行作業(yè)模塊,若第四主控步驟S14能夠成功生成并行目標(biāo)代碼,則將第四主控步驟S14生成的并行目標(biāo)代碼進行并行作業(yè)提交執(zhí)行,監(jiān)控并行作業(yè)的運行狀態(tài),收集并行作業(yè)結(jié)果。同時,在第五主控步驟S15中,可根據(jù)需要,將本次執(zhí)行的用例并行目標(biāo)碼、并行作業(yè)運行所需數(shù)據(jù)文件、并行作業(yè)運行結(jié)果和并行作業(yè)運行過程日志打包存儲至測試執(zhí)行日志目錄,以及生成簡要的并行作業(yè)運行過程測試日志信息。若第四主控步驟S14生成并行目標(biāo)代碼失敗,則不執(zhí)行任何操作(換言之,跳過第五主控步驟S15)。判斷步驟S10,用于在第五主控步驟S15結(jié)束后判斷是否還有其他測試用例未執(zhí)行。若第五主控步驟S15結(jié)束后還有其他測試用例未執(zhí)行,則轉(zhuǎn)至第二主控步驟S12并繼續(xù)進行測試下一個用例。若沒有需要執(zhí)行的測試用例,則轉(zhuǎn)至第六主控步驟S16。第六主控步驟S16是分析第四主控步驟S14的并行編譯過程日志,分析第五主控步驟S15的并行作業(yè)運行過程日志和并行作業(yè)運行結(jié)果,并與預(yù)期結(jié)果進行比對,以確定并行編譯器的編譯過程是否符合預(yù)期結(jié)果,以及確定并行作業(yè)在并行程序運行環(huán)境(例如,作業(yè)管理、運行時庫等)下的運行結(jié)果是否符合預(yù)期結(jié)果。(2)生成用例并行源代碼模塊是在測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置得到并行源代碼生成配置和并行編譯選項配置,接受測試流程控制模塊傳遞的全局并行編譯選項,生成所需的用例并行源代碼和Makefile文件。第一生成步驟S21是對測試用例配置進行分析,獲取構(gòu)建并行源代碼所需的并行源代碼生成配置和構(gòu)建Makefile所需的并行編譯選項配置。第二生成步驟S22是從并行源代碼生成配置中獲取FRAME信息,從基礎(chǔ)架構(gòu)樣本中找出相匹配的.c文件,并拷貝至臨時工作目錄中命名為Main. C。第三生成步驟S23是從并行源代碼生成配置中獲取INCLUDE信息,從測試場景樣本中查找匹配的.h、. c或.a文件(測試場景定義、測試輔助函數(shù)庫),并將其拷貝至臨時工
      作目錄,然后實例化第二生成步驟S22中Main, c的#include定義。第四生成步驟S24是從并行源代碼生成配置中獲取DATA信息,將第三生成步驟S23中的測試場景相關(guān)源代碼和處理后的Main, c中的變量類型宏定義實例化為具體的基本變量類型(int、char、long、float等)或并行語言擴展的共享、SIMD(Single InstructionMultiple Data,單指令多數(shù)據(jù)流)變量類型,將編譯指示宏定義實例化為具體的編譯指示宏定義。第五生成步驟S25是從并行源代碼生成配置中獲取MAKE信息,從Makefile樣本中查找匹配的Makefile文件,拷貝至臨時工作目錄。然后將Makefile中TARGET實例化為測試用例英文名,SOURCE實例化為第三生成步驟S23中的測試場景相關(guān).c文件和Main, c,HEADER實例化為第三生成步驟S23中的測試場景相關(guān).h文件。接著根據(jù)全局并行編譯選項和用例并行編譯選項配置,并將Makefile中的CFLAGS和LDFLAGS實例化為具體的編譯和鏈接選項;其中,優(yōu)選地,用例相關(guān)并行編譯選項優(yōu)先于全局并行編譯選項定義。(3)運行和監(jiān)控用例并行作業(yè)模塊是在測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置以得到并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置,接受測試流程控制模塊傳遞的全局并行作業(yè)提交選項和并行作業(yè)狀態(tài)監(jiān)控選項,運行和控制并行作業(yè)運行。第一步驟S31是對測試用例配置進行分析,獲取并行作業(yè)提交所需的并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置(用例并行作業(yè)提交選項、用例并行作業(yè)運行參數(shù))。第二步驟S32是根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,從輔助數(shù)據(jù)目錄中拷貝或運行輔助腳本新建或運行系統(tǒng)命令新建并行作業(yè)所需數(shù)據(jù)文件。第三步驟S33是根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,在運行節(jié)點中分發(fā)和部署并行作業(yè)所需的并行目標(biāo)代碼、并行作業(yè)數(shù)據(jù)文件。第四步驟S34是根據(jù)全局并行作業(yè)提交選項和用例并行作業(yè)運行配置,實例化并行作業(yè)提交程序的運行選項和并行目標(biāo)代碼的運行參數(shù),并驅(qū)動并行作業(yè)提交程序提交運行用例并行目標(biāo)代碼。第五步驟S35是根據(jù)并行作業(yè)狀態(tài)監(jiān)控選項,在預(yù)置的時間間隔內(nèi)查看并行作業(yè)的運行狀態(tài)是否為正常、并行作業(yè)運行結(jié)果文件是否有新記錄等。并行作業(yè)的運行狀態(tài)異?;蜻\行結(jié)果文件超出預(yù)置查看次數(shù)仍未更新時,申請結(jié)束并行作業(yè)。并行作業(yè)結(jié)束后,根據(jù)退出狀態(tài)和結(jié)果文件的完整性,驗證并行作業(yè)是否為正常退出,若異常退出則轉(zhuǎn)至第四步驟S34重新提交,若正常退出或重新提交超出預(yù)置次數(shù)則轉(zhuǎn)至第六步驟S36。
      第六步驟S36從運行節(jié)點中收集和匯總并行作業(yè)運行結(jié)果。具體實例為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。實例I :測試用例并行源代碼生成圖4 中的“(a)Main_Temp. c”部分、“(b)Data_type. c”部分及“(c)Data_type. h”部分分別為基礎(chǔ)架構(gòu)樣本、測試場景樣本等并行源代碼樣本,該測試場景主要用于定義和初始化各進程運行過程中所使用的變量。圖5中的“(a)測試用例I配置”部分以及“(b)測試用例2配置”部分分別定義了兩個用例的并行源代碼生成配置。通過修改DATA的_DATA_ SHARE參數(shù),可以實現(xiàn)共享變量或非共享變量測試。通過修改DATA的DATA_STR和DATA_TYPE參數(shù),可以實現(xiàn)基本類型、結(jié)構(gòu)體類型、共用體類型、枚舉類型變量的測試,以及擴展至SMD類型變量的測試。對于不同的并行語言及運行時庫來說,應(yīng)該建立相適宜的測試場景。例如,針對于進程間同步、互斥、消息廣播等范圍性操作,可以將操作范圍的作用域進行參數(shù)化,在測試相應(yīng)操作前實例化為具體的作用域,以生成具體的測試用例并行源代碼。例如,針對于運行時庫的API參數(shù)取值的測試,可以先根據(jù)參數(shù)類型進行劃分為引用類型、值類型,對于引用類型的取值可以是異常的空指針或API參數(shù)需要有效值,對于值類型的取值可以根據(jù)API參數(shù)的具體取值范圍進行正常值和異常值的劃分。實例2 :用例并行作業(yè)提交圖5的“(a)測試用例I配置”部分以及“(b)測試用例2配置”同時也定義了兩個用例的并行作業(yè)提交配置。通過修改PREDATA,可以為該用例并行作業(yè)運行前完成數(shù)據(jù)準(zhǔn)備。通過修改PRESPREAD,可以為該用例并行作業(yè)運行前完成數(shù)據(jù)的分發(fā)和并行目標(biāo)代碼的部署。通過修改RUNFLAGS,可以為并行作業(yè)提交程序配置運行參數(shù)。通過修改RUNARG,可以為用例并行目標(biāo)代碼配置運行參數(shù)。對于不同的并行語言及其并行運行環(huán)境來說,一般并行作業(yè)提交程序會完成分發(fā)和部署并行作業(yè)所需的數(shù)據(jù)和并行目標(biāo)代碼,基本上可以忽略PRESPREAD過程。對于所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明實施例的精神或范圍的情況下,在其他實施例中實現(xiàn)。因此,本發(fā)明實施例不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。本發(fā)明上述實施例提供的方法相對于基于特定并行模型/語言的測試方法來說,具有較強的系統(tǒng)性、可擴展性和普適性。該方法通過將具體的并行語言在基礎(chǔ)語言基礎(chǔ)上的語法擴展、并行運行時庫API等可測試特性,分解為較為通用的基礎(chǔ)框架和特定可參數(shù)化的測試場景,并通過測試用例配置進行實例化,已實現(xiàn)測試用例并行源代碼的生成。對于不同的并行模型/語言來說,僅需要分析共性測試場景的差異性和補充特性測試場景,并通過測試用例配置及其集合來構(gòu)建特定并行模型/語言相適宜的測試。
      本發(fā)明上述實施例提供的方法可以提供測試用例設(shè)計的可復(fù)用性,針對并行語言、編譯器及運行時庫的并行特性進行參數(shù)化,將測試用例設(shè)計集中于可復(fù)用的測試場景設(shè)計及對測試場景的參數(shù)化配置,提升了測試用例設(shè)計的效率和價值。本發(fā)明上述實施例提供的方法將并行語言、編譯器及運行時庫的測試集中于測試場景的設(shè)計,通過測試驅(qū)動程序、測試配置文件、測試樣本程序的有效結(jié)合,自動化了并行源代碼的生成、并行編譯器編譯生成并行目標(biāo)代碼、并行作業(yè)提交、并行作業(yè)狀態(tài)監(jiān)控、并行作業(yè)運行結(jié)果收集和分析,在較大程度上提高了測試工作效率。需要說明的是,除非特別指出,否則 說明書中的術(shù)語“第一”、“第二”、“第三”等描述僅僅用于區(qū)分說明書中的各個組件、元素、步驟等,而不是用于表示各個組件、元素、步驟之間的邏輯關(guān)系或者順序關(guān)系等??梢岳斫獾氖?,雖然本發(fā)明已以較佳實施例披露如上,然而上述實施例并非用以限定本發(fā)明。對于任何熟悉本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的技術(shù)內(nèi)容對本發(fā)明技術(shù)方案作出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護的范圍內(nèi)。
      權(quán)利要求
      1.一種并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法,其特征在于包括測試流程控制模塊、生成用例并行源代碼模塊以及運行和監(jiān)控用例并行作業(yè)模塊;其中,所述生成用例并行源代碼模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置得到并行源代碼生成配置和并行編譯選項配置,接受測試流程控制模塊傳遞的全局并行編譯選項,生成所需的用例并行源代碼和Makefile文件;并且,所述運行和監(jiān)控用例并行作業(yè)模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置以得到并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置,接受所述測試流程控制模塊傳遞的全局并行作業(yè)提交選項和并行作業(yè)狀態(tài)監(jiān)控選項,運行和控制并行作業(yè)運行。
      2.根據(jù)權(quán)利要求I所述的并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法,其特征在于,所述測試流程控制模塊包括 第一主控步驟,用于進行測試運行環(huán)境的分析和配置,確定測試用例列表或測試用例目錄; 第二主控步驟,用于分析測試用例列表或遍歷測試用例配置目錄,確定需要測試的用例集合; 第三主控步驟,用于調(diào)用生成用例并行源代碼模塊,逐次解析測試用例配置和生成所需的用例并行源代碼和Makefile文件; 第四主控步驟,用于利用第三主控步驟生成的Makefile文件,驅(qū)動并行編譯器對第三主控步驟生成的用例并行源代碼進行編譯和生成并行目標(biāo)代碼; 第五主控步驟,用于調(diào)用運行和監(jiān)控用例并行作業(yè)模塊; 判斷步驟,用于在第五主控步驟結(jié)束后判斷是否還有其他測試用例未執(zhí)行,若第五主控步驟結(jié)束后還有其他測試用例未執(zhí)行,則轉(zhuǎn)至第二主控步驟并繼續(xù)進行測試下一個用例;若沒有需要執(zhí)行的測試用例,則轉(zhuǎn)至第六主控步驟; 第六主控步驟,用于分析第四主控步驟的并行編譯過程日志,分析第五主控步驟的并行作業(yè)運行過程日志和并行作業(yè)運行結(jié)果,并與預(yù)期結(jié)果進行比對,以確定并行編譯器的編譯過程是否符合預(yù)期結(jié)果,以及確定并行作業(yè)在并行程序運行環(huán)境下的運行結(jié)果是否符合預(yù)期結(jié)果。
      3.根據(jù)權(quán)利要求I或2所述的并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法,其特征在于,所述生成用例并行源代碼模塊包括 第一生成步驟,用于對測試用例配置進行分析,獲取構(gòu)建并行源代碼所需的并行源代碼生成配置和構(gòu)建Makefile所需的并行編譯選項配置; 第二生成步驟,用于從并行源代碼生成配置中獲取FRAME信息,從基礎(chǔ)架構(gòu)樣本中找出相匹配的.c文件,并拷貝至臨時工作目錄中命名為Main, c ; 第三生成步驟,用于從并行源代碼生成配置中獲取INCLUDE信息,從測試場景樣本中查找匹配的測試場景定義、測試輔助函數(shù)庫,并將其拷貝至臨時工作目錄,然后實例化第二生成步驟中Main, c的#include定義; 第四生成步驟,用于從并行源代碼生成配置中獲取DATA信息,將第三生成步驟中的測試場景相關(guān)源代碼和處理后的Main, c中的變量類型宏定義實例化為具體的基本變量類型或并行語言擴展的共享、SIMD變量類型,將編譯指示宏定義實例化為具體的編譯指示宏定義;第五生成步驟,用于從并行源代碼生成配置中獲取MAKE信息,WMakefile樣本中查找匹配的Makefile文件,拷貝至臨時工作目錄,然后將Makefile中TARGET實例化為測試用例英文名,SOURCE實例化為第三生成步驟中的測試場景相關(guān).c文件和Main, c, HEADER實例化為第三生成步驟中的測試場景相關(guān).h文件,接著根據(jù)全局并行編譯選項和用例并行編譯選項配置,并將Makefile中的CFLAGS和LDFLAGS實例化為具體的編譯和鏈接選項。
      4.根據(jù)權(quán)利要求I至3之一所述的并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法,其特征在于,所述運行和監(jiān)控用例并行作業(yè)模塊包括 第一步驟,用于對測試用例配置進行分析,獲取并行作業(yè)提交所需的并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置; 第二步驟,用于根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,從輔助數(shù)據(jù)目錄中拷貝或運行輔助腳本新建或運行系統(tǒng)命令新建并行作業(yè)所需數(shù)據(jù)文件; 第三步驟,用于根據(jù)并行作業(yè)運行前準(zhǔn)備配置信息,根據(jù)并行作業(yè)實際需要,在運行節(jié)點中分發(fā)和部署并行作業(yè)所需的并行目標(biāo)代碼、并行作業(yè)數(shù)據(jù)文件; 第四步驟,用于根據(jù)全局并行作業(yè)提交選項和用例并行作業(yè)運行配置,實例化并行作業(yè)提交程序的運行選項和并行目標(biāo)代碼的運行參數(shù),并驅(qū)動并行作業(yè)提交程序提交運行用例并行目標(biāo)代碼; 第五步驟,用于根據(jù)并行作業(yè)狀態(tài)監(jiān)控選項,在預(yù)置的時間間隔內(nèi)查看并行作業(yè)的運行狀態(tài)是否為正常、并行作業(yè)運行結(jié)果文件是否有新記錄等;并行作業(yè)的運行狀態(tài)異?;蜻\行結(jié)果文件超出預(yù)置查看次數(shù)仍未更新時,申請結(jié)束并行作業(yè);并行作業(yè)結(jié)束后,根據(jù)退出狀態(tài)和結(jié)果文件的完整性,驗證并行作業(yè)是否為正常退出,若異常退出則轉(zhuǎn)至第四步驟重新提交,若正常退出或重新提交超出預(yù)置次數(shù)則轉(zhuǎn)至第六步驟; 第六步驟,用于從運行節(jié)點中收集和匯總并行作業(yè)運行結(jié)果。
      全文摘要
      本發(fā)明提供的一種并行源代碼生成、編譯及驅(qū)動執(zhí)行的測試方法包括測試流程控制模塊、生成用例并行源代碼模塊以及運行和監(jiān)控用例并行作業(yè)模塊;其中,所述生成用例并行源代碼模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置得到并行源代碼生成配置和并行編譯選項配置,接受測試流程控制模塊傳遞的全局并行編譯選項,生成所需的用例并行源代碼和Makefile文件;并且,所述運行和監(jiān)控用例并行作業(yè)模塊用于在所述測試流程控制模塊的驅(qū)動下,分析和解析測試用例配置以得到并行作業(yè)運行前準(zhǔn)備配置和并行作業(yè)運行配置,接受所述測試流程控制模塊傳遞的全局并行作業(yè)提交選項和并行作業(yè)狀態(tài)監(jiān)控選項,運行和控制并行作業(yè)運行。
      文檔編號G06F11/36GK102880474SQ201210380728
      公開日2013年1月16日 申請日期2012年10月9日 優(yōu)先權(quán)日2012年10月9日
      發(fā)明者吳利, 董超群, 徐小春, 司品超, 何曼, 張超容 申請人:無錫江南計算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1