CN102880474B - 并行源代码生成、编译及驱动执行的测试方法 - Google Patents
并行源代码生成、编译及驱动执行的测试方法 Download PDFInfo
- Publication number
- CN102880474B CN102880474B CN201210380728.2A CN201210380728A CN102880474B CN 102880474 B CN102880474 B CN 102880474B CN 201210380728 A CN201210380728 A CN 201210380728A CN 102880474 B CN102880474 B CN 102880474B
- Authority
- CN
- China
- Prior art keywords
- parallel
- test
- concurrent job
- configuration
- case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供的一种并行源代码生成、编译及驱动执行的测试方法包括:测试流程控制模块、生成用例并行源代码模块以及运行和监控用例并行作业模块;其中,所述生成用例并行源代码模块用于在所述测试流程控制模块的驱动下,分析和解析测试用例配置得到并行源代码生成配置和并行编译选项配置,接受测试流程控制模块传递的全局并行编译选项,生成所需的用例并行源代码和Makefile文件;并且,所述运行和监控用例并行作业模块用于在所述测试流程控制模块的驱动下,分析和解析测试用例配置以得到并行作业运行前准备配置和并行作业运行配置,接受所述测试流程控制模块传递的全局并行作业提交选项和并行作业状态监控选项,运行和控制并行作业运行。
Description
技术领域
本发明涉及计算机技术领域,更具体地说,本发明涉及一种针对并行语言、编译器及运行时库的并行源代码生成、编译及驱动执行的测试方法。
背景技术
随着,高性能计算机规模的日趋庞大,云计算、网格计算、物联网等新行业领域的兴起,并行语言向深度和广度的发展越来越显著,发展潜力越来越大,对国防、民生诸多领域的影响也越来越突出。
并行语言是开发和设计并行程序的唯一手段。同时,由于并行程序设计的特点,并行计算发展的历史渊源,并行语言在并行程序的开发、设计和运行环境等方面存在诸多问题,也给其测试带来较大难题,严重制约了并行计算的发展。
在并行程序开发与设计方面问题:①并行程序设计不仅包含了串行程序设计,而且还包含了更多的富有挑战性的并行问题;②串行程序设计仅有一个普遍被接受的冯.诺依曼模型,而并行计算模型虽有很多,但没有一个被共同认可;③并行程序设计还受到特定运行时环境的影响。
在并行程序的运行环境方面问题:①并行程序的运行逻辑远比串行程序复杂,对运行环境的要求远比串行程序高得多、复杂得多;②运行环境的缺陷直接威胁到并行程序运行的正确性。
目前,国外主流的高性能计算机研究公司或机构有:IBM、惠普、NEC、Cray等。并行编程模型/语言有:UPC、MPI、X10、Chapel、OpenMP、OpenCL、PVM、HPF等,其主要是对标准C、Fortran等串行语言的扩展。这两年,也有公司在研究基于Java、C#等语言的并行编程。
在国内,主要有“天河”、“曙光”、“神威”三大系列高性能计算机系统,均延承或自主开发了相应的并行编程模型/语言。
在并行语言测试方面,以开发并行模型/语言为主导的各家公司,也相继对传统串行调试工具或测试模型进行了扩展,如:PDB、JUnit的并行扩展等,以及基于特定并行模型/语言的测试包,如:UUTF、MPICH-Test等。
然而对并行语言进行测试却诸多不足:①起步较晚,测试多数是针对特定的并行语言,且受特定的并行程序开发与设计方法限制;②由于并行计算模型、并行体系结构不同和高性能计算机“代”的更迭,测试没有系统性和规范性,也缺乏方法和手段,更缺乏有效的测试工具;③并行执行存在随机性,有时并行方面的缺陷需要运行很多遍才会暴露出来;④并行程序运行时监控困难,综合运行环境因素的并行程序运行时监控更难;⑤并行规模因素对测试的影响,也是不容忽视的问题。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于配置文件和样本并行源代码的自动化并行源代码生成、编译及驱动执行的并行语言、编译器及运行时库测试方法,该方法相对于基于特定并行模型/语言的测试方法来说,具有较强的系统性、可扩展性和普适性。
根据本发明,提供了一种并行源代码生成、编译及驱动执行的测试方法,其包括:测试流程控制模块、生成用例并行源代码模块以及运行和监控用例并行作业模块;其中,所述生成用例并行源代码模块用于在所述测试流程控制模块的驱动下,分析和解析测试用例配置得到并行源代码生成配置和并行编译选项配置,接受测试流程控制模块传递的全局并行编译选项,生成所需的用例并行源代码和Makefile文件;并且,所述运行和监控用例并行作业模块用于在所述测试流程控制模块的驱动下,分析和解析测试用例配置以得到并行作业运行前准备配置和并行作业运行配置,接受所述测试流程控制模块传递的全局并行作业提交选项和并行作业状态监控选项,运行和控制并行作业运行。
优选地,所述测试流程控制模块包括:第一主控步骤,用于进行测试运行环境的分析和配置,确定测试用例列表或测试用例目录;第二主控步骤,用于分析测试用例列表或遍历测试用例配置目录,确定需要测试的用例集合;第三主控步骤,用于调用生成用例并行源代码模块,逐次解析测试用例配置和生成所需的用例并行源代码和Makefile文件;第四主控步骤,用于利用第三主控步骤生成的Makefile文件,驱动并行编译器对第三主控步骤生成的用例并行源代码进行编译和生成并行目标代码;第五主控步骤,用于调用运行和监控用例并行作业模块;判断步骤,用于在第五主控步骤结束后判断是否还有其他测试用例未执行,若第五主控步骤结束后还有其他测试用例未执行,则转至第二主控步骤并继续进行测试下一个用例;若没有需要执行的测试用例,则转至第六主控步骤;第六主控步骤,用于分析第四主控步骤的并行编译过程日志,分析第五主控步骤的并行作业运行过程日志和并行作业运行结果,并与预期结果进行比对,以确定并行编译器的编译过程是否符合预期结果,以及确定并行作业在并行程序运行环境下的运行结果是否符合预期结果。
优选地,所述生成用例并行源代码模块包括:第一生成步骤,用于对测试用例配置进行分析,获取构建并行源代码所需的并行源代码生成配置和构建Makefile所需的并行编译选项配置;第二生成步骤,用于从并行源代码生成配置中获取FRAME信息,从基础架构样本中找出相匹配的.c文件,并拷贝至临时工作目录中命名为Main.c;第三生成步骤,用于从并行源代码生成配置中获取INCLUDE信息,从测试场景样本中查找匹配的测试场景定义、测试辅助函数库,并将其拷贝至临时工作目录,然后实例化第二生成步骤中Main.c的#include定义;第四生成步骤,用于从并行源代码生成配置中获取DATA信息,将第三生成步骤中的测试场景相关源代码和处理后的Main.c中的变量类型宏定义实例化为具体的基本变量类型或并行语言扩展的共享、SIMD变量类型,将编译指示宏定义实例化为具体的编译指示宏定义;第五生成步骤,用于从并行源代码生成配置中获取MAKE信息,从Makefile样本中查找匹配的Makefile文件,拷贝至临时工作目录,然后将Makefile中TARGET实例化为测试用例英文名,SOURCE实例化为第三生成步骤中的测试场景相关.c文件和Main.c,HEADER实例化为第三生成步骤中的测试场景相关.h文件,接着根据全局并行编译选项和用例并行编译选项配置,并将Makefile中的CFLAGS和LDFLAGS实例化为具体的编译和链接选项。
优选地,所述运行和监控用例并行作业模块包括:第一步骤,用于对测试用例配置进行分析,获取并行作业提交所需的并行作业运行前准备配置和并行作业运行配置;第二步骤,用于根据并行作业运行前准备配置信息,根据并行作业实际需要,从辅助数据目录中拷贝或运行辅助脚本新建或运行系统命令新建并行作业所需数据文件;第三步骤,用于根据并行作业运行前准备配置信息,根据并行作业实际需要,在运行节点中分发和部署并行作业所需的并行目标代码、并行作业数据文件;第四步骤,用于根据全局并行作业提交选项和用例并行作业运行配置,实例化并行作业提交程序的运行选项和并行目标代码的运行参数,并驱动并行作业提交程序提交运行用例并行目标代码;第五步骤,用于根据并行作业状态监控选项,在预置的时间间隔内查看并行作业的运行状态是否为正常、并行作业运行结果文件是否有新记录等;并行作业的运行状态异常或运行结果文件超出预置查看次数仍未更新时,申请结束并行作业;并行作业结束后,根据退出状态和结果文件的完整性,验证并行作业是否为正常退出,若异常退出则转至第四步骤重新提交,若正常退出或重新提交超出预置次数则转至第六步骤;第六步骤,用于从运行节点中收集和汇总并行作业运行结果。
本发明提供的方法相对于基于特定并行模型/语言的测试方法来说,具有较强的系统性、可扩展性和普适性。该方法通过将具体的并行语言在基础语言基础上的语法扩展、并行运行时库API等可测试特性,分解为较为通用的基础框架和特定可参数化的测试场景,并通过测试用例配置进行实例化,以实现测试用例并行源代码的生成。对于不同的并行模型/语言来说,仅需要分析共性测试场景的差异性和补充特性测试场景,并通过测试用例配置及其集合来构建特定并行模型/语言相适宜的测试。
并且,本发明提供的方法可以提供测试用例设计的可复用性,针对并行语言、编译器及运行时库的并行特性进行参数化,将测试用例设计集中于可复用的测试场景设计及对测试场景的参数化配置,提升了测试用例设计的效率和价值。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了根据本发明实施例的测试流程控制示意图。
图2示意性地示出了根据本发明实施例的生成用例并行源代码示意图。
图3示意性地示出了根据本发明实施例的运行和监控用例并行作业示意图。
图4示意性地示出了根据本发明实施例的UPC语言示例的并行源代码样本。
图5示意性地示出了根据本发明实施例的并行源代码生成配置。
需要说明的是,附图用于说明本发明,而非限制本发明。。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明实施例提出了基于配置文件和样本程序自动生成待测并行源代码方法,为测试和验证并行语言、编译器和运行时库提供了一种灵活、可配置的测试框架(如图1所示)。该方法通过对并行编译选项,对并行语言扩展的变量类型、并行编译指示,对并行运行时库的API(ApplicationProgramming Interface,应用程序编程接口)参数类型、并行操作范围等进行参数化配置,生成测试并行编译器的正向和反向用例源代码(如图2所示)。该方法通过对并行作业规模、并行作业运行参数、并行作业状态监控等进行参数化,运行和控制并行作业运行(如图3所示)。
在根据本发明实施例中,可首先执行自动化的测试流程控制过程的处理;随后执行针对可参数化的测试场景利用配置信息自动生成并行语言源代码的处理;然后执行自动化的并行作业运行和监控过程的处理。
由此,根据本发明实施例的针对并行语言、编译器及运行时库的并行源代码生成、编译及驱动执行的测试方法包括:测试流程控制模块、生成用例并行源代码模块以及运行和监控用例并行作业模块。
(1)测试流程控制模块为测试的主控模块。
第一主控步骤S11是进行测试运行环境的分析和配置,确定测试用例列表或测试用例目录;具体地说,测试用例列表或测试用例目录包括:测试用例配置目录、测试执行日志目录、测试临时工作目录、样本源代码目录(基础架构样本、测试场景样本、Makefile样本)、辅助脚本目录、辅助数据目录、并行编译的全局编译选项、并行作业的全局作业提交选项、是否保存测试中间数据等。第一主控步骤S11中,测试中间数据主要有:并行编译过程信息(并行源代码、生成的并行目标码、编译过程日志)、并行作业运行信息(并行目标码、所需数据文件、运行结果、运行过程日志)。
第二主控步骤S12是分析测试用例列表或遍历测试用例配置目录,确定需要测试的用例集合。
第三主控步骤S13是调用生成用例并行源代码模块,逐次解析测试用例配置和生成所需的用例并行源代码和Makefile文件。
第四主控步骤S14是利用第三主控步骤S13生成的Makefile文件,驱动并行编译器对第三主控步骤S13生成的用例并行源代码进行编译和生成并行目标代码。同时,在第四主控步骤S14中,可根据需要,将本次编译的用例并行源代码、生成的并行目标代码和并行编译过程日志打包存储至测试执行日志目录,以及生成简要的并行编译过程测试日志信息。
第五主控步骤S15是调用运行和监控用例并行作业模块,若第四主控步骤S14能够成功生成并行目标代码,则将第四主控步骤S14生成的并行目标代码进行并行作业提交执行,监控并行作业的运行状态,收集并行作业结果。同时,在第五主控步骤S15中,可根据需要,将本次执行的用例并行目标码、并行作业运行所需数据文件、并行作业运行结果和并行作业运行过程日志打包存储至测试执行日志目录,以及生成简要的并行作业运行过程测试日志信息。若第四主控步骤S14生成并行目标代码失败,则不执行任何操作(换言之,跳过第五主控步骤S15)。
判断步骤S10,用于在第五主控步骤S15结束后判断是否还有其他测试用例未执行。若第五主控步骤S15结束后还有其他测试用例未执行,则转至第二主控步骤S12并继续进行测试下一个用例。若没有需要执行的测试用例,则转至第六主控步骤S16。
第六主控步骤S16是分析第四主控步骤S14的并行编译过程日志,分析第五主控步骤S15的并行作业运行过程日志和并行作业运行结果,并与预期结果进行比对,以确定并行编译器的编译过程是否符合预期结果,以及确定并行作业在并行程序运行环境(例如,作业管理、运行时库等)下的运行结果是否符合预期结果。
(2)生成用例并行源代码模块是在测试流程控制模块的驱动下,分析和解析测试用例配置得到并行源代码生成配置和并行编译选项配置,接受测试流程控制模块传递的全局并行编译选项,生成所需的用例并行源代码和Makefile文件。
第一生成步骤S21是对测试用例配置进行分析,获取构建并行源代码所需的并行源代码生成配置和构建Makefile所需的并行编译选项配置。
第二生成步骤S22是从并行源代码生成配置中获取FRAME信息,从基础架构样本中找出相匹配的.c文件,并拷贝至临时工作目录中命名为Main.c。
第三生成步骤S23是从并行源代码生成配置中获取INCLUDE信息,从测试场景样本中查找匹配的.h、.c或.a文件(测试场景定义、测试辅助函数库),并将其拷贝至临时工作目录,然后实例化第二生成步骤S22中Main.c的#include定义。
第四生成步骤S24是从并行源代码生成配置中获取DATA信息,将第三生成步骤S23中的测试场景相关源代码和处理后的Main.c中的变量类型宏定义实例化为具体的基本变量类型(int、char、long、float等)或并行语言扩展的共享、SIMD(Single Instruction Multiple Data,单指令多数据流)变量类型,将编译指示宏定义实例化为具体的编译指示宏定义。
第五生成步骤S25是从并行源代码生成配置中获取MAKE信息,从Makefile样本中查找匹配的Makefile文件,拷贝至临时工作目录。然后将Makefile中TARGET实例化为测试用例英文名,SOURCE实例化为第三生成步骤S23中的测试场景相关.c文件和Main.c,HEADER实例化为第三生成步骤S23中的测试场景相关.h文件。接着根据全局并行编译选项和用例并行编译选项配置,并将Makefile中的CFLAGS和LDFLAGS实例化为具体的编译和链接选项;其中,优选地,用例相关并行编译选项优先于全局并行编译选项定义。
(3)运行和监控用例并行作业模块是在测试流程控制模块的驱动下,分析和解析测试用例配置以得到并行作业运行前准备配置和并行作业运行配置,接受测试流程控制模块传递的全局并行作业提交选项和并行作业状态监控选项,运行和控制并行作业运行。
第一步骤S31是对测试用例配置进行分析,获取并行作业提交所需的并行作业运行前准备配置和并行作业运行配置(用例并行作业提交选项、用例并行作业运行参数)。
第二步骤S32是根据并行作业运行前准备配置信息,根据并行作业实际需要,从辅助数据目录中拷贝或运行辅助脚本新建或运行系统命令新建并行作业所需数据文件。
第三步骤S33是根据并行作业运行前准备配置信息,根据并行作业实际需要,在运行节点中分发和部署并行作业所需的并行目标代码、并行作业数据文件。
第四步骤S34是根据全局并行作业提交选项和用例并行作业运行配置,实例化并行作业提交程序的运行选项和并行目标代码的运行参数,并驱动并行作业提交程序提交运行用例并行目标代码。
第五步骤S35是根据并行作业状态监控选项,在预置的时间间隔内查看并行作业的运行状态是否为正常、并行作业运行结果文件是否有新记录等。并行作业的运行状态异常或运行结果文件超出预置查看次数仍未更新时,申请结束并行作业。并行作业结束后,根据退出状态和结果文件的完整性,验证并行作业是否为正常退出,若异常退出则转至第四步骤S34重新提交,若正常退出或重新提交超出预置次数则转至第六步骤S36。
第六步骤S36从运行节点中收集和汇总并行作业运行结果。
【具体实例】
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
实例1:测试用例并行源代码生成
图4中的“(a)Main_Temp.c”部分、“(b)Data_type.c”部分及“(c)Data_type.h”部分分别为基础架构样本、测试场景样本等并行源代码样本,该测试场景主要用于定义和初始化各进程运行过程中所使用的变量。图5中的“(a)测试用例1配置”部分以及“(b)测试用例2配置”部分分别定义了两个用例的并行源代码生成配置。通过修改DATA的_DATA_SHARE参数,可以实现共享变量或非共享变量测试。通过修改DATA的DATA_STR和DATA_TYPE参数,可以实现基本类型、结构体类型、共用体类型、枚举类型变量的测试,以及扩展至SIMD类型变量的测试。
对于不同的并行语言及运行时库来说,应该建立相适宜的测试场景。例如,针对于进程间同步、互斥、消息广播等范围性操作,可以将操作范围的作用域进行参数化,在测试相应操作前实例化为具体的作用域,以生成具体的测试用例并行源代码。例如,针对于运行时库的API参数取值的测试,可以先根据参数类型进行划分为引用类型、值类型,对于引用类型的取值可以是异常的空指针或API参数需要有效值,对于值类型的取值可以根据API参数的具体取值范围进行正常值和异常值的划分。
实例2:用例并行作业提交
图5的“(a)测试用例1配置”部分以及“(b)测试用例2配置”同时也定义了两个用例的并行作业提交配置。通过修改PREDATA,可以为该用例并行作业运行前完成数据准备。通过修改PRESPREAD,可以为该用例并行作业运行前完成数据的分发和并行目标代码的部署。通过修改RUNFLAGS,可以为并行作业提交程序配置运行参数。通过修改RUNARG,可以为用例并行目标代码配置运行参数。
对于不同的并行语言及其并行运行环境来说,一般并行作业提交程序会完成分发和部署并行作业所需的数据和并行目标代码,基本上可以忽略PRESPREAD过程。
对于所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其他实施例中实现。因此,本发明实施例不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明上述实施例提供的方法相对于基于特定并行模型/语言的测试方法来说,具有较强的系统性、可扩展性和普适性。该方法通过将具体的并行语言在基础语言基础上的语法扩展、并行运行时库API等可测试特性,分解为较为通用的基础框架和特定可参数化的测试场景,并通过测试用例配置进行实例化,已实现测试用例并行源代码的生成。对于不同的并行模型/语言来说,仅需要分析共性测试场景的差异性和补充特性测试场景,并通过测试用例配置及其集合来构建特定并行模型/语言相适宜的测试。
本发明上述实施例提供的方法可以提供测试用例设计的可复用性,针对并行语言、编译器及运行时库的并行特性进行参数化,将测试用例设计集中于可复用的测试场景设计及对测试场景的参数化配置,提升了测试用例设计的效率和价值。
本发明上述实施例提供的方法将并行语言、编译器及运行时库的测试集中于测试场景的设计,通过测试驱动程序、测试配置文件、测试样本程序的有效结合,自动化了并行源代码的生成、并行编译器编译生成并行目标代码、并行作业提交、并行作业状态监控、并行作业运行结果收集和分析,在较大程度上提高了测试工作效率。
需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (1)
1.一种并行源代码生成、编译及驱动执行的测试方法,其特征在于包括:测试流程控制处理流程、生成用例并行源代码处理流程以及运行和监控用例并行作业处理流程;其中,所述生成用例并行源代码处理流程用于在所述测试流程控制处理流程的驱动下,分析和解析测试用例配置得到并行源代码生成配置和并行编译选项配置,接受测试流程控制处理流程传递的全局并行编译选项,生成所需的用例并行源代码和Makefile文件;并且,所述运行和监控用例并行作业处理流程用于在所述测试流程控制处理流程的驱动下,分析和解析测试用例配置以得到并行作业运行前准备配置和并行作业运行配置,接受所述测试流程控制处理流程传递的全局并行作业提交选项和并行作业状态监控选项,运行和控制并行作业运行;
其中,所述测试流程控制处理流程包括:
第一主控步骤,用于进行测试运行环境的分析和配置,确定测试用例列表或测试用例目录;
第二主控步骤,用于分析测试用例列表或遍历测试用例配置目录,确定需要测试的用例集合;
第三主控步骤,用于调用生成用例并行源代码处理流程,逐次解析测试用例配置和生成所需的用例并行源代码和Makefile文件;
第四主控步骤,用于利用第三主控步骤生成的Makefile文件,驱动并行编译器对第三主控步骤生成的用例并行源代码进行编译和生成并行目标代码;
第五主控步骤,用于调用运行和监控用例并行作业处理流程;
判断步骤,用于在第五主控步骤结束后判断是否还有其他测试用例未执行,若第五主控步骤结束后还有其他测试用例未执行,则转至第二主控步骤并继续进行测试下一个用例;若没有需要执行的测试用例,则转至第六主控步骤;
第六主控步骤,用于分析第四主控步骤的并行编译过程日志,分析第五主控步骤的并行作业运行过程日志和并行作业运行结果,并与预期结果进行比对,以确定并行编译器的编译过程是否符合预期结果,以及确定并行作业在并行程序运行环境下的运行结果是否符合预期结果;
其中,所述生成用例并行源代码处理流程包括:
第一生成步骤,用于对测试用例配置进行分析,获取构建并行源代码所需的并行源代码生成配置和构建Makefile所需的并行编译选项配置;
第二生成步骤,用于从并行源代码生成配置中获取FRAME信息,从基础架构样本中找出相匹配的.c文件,并拷贝至临时工作目录中命名为Main.c;
第三生成步骤,用于从并行源代码生成配置中获取INCLUDE信息,从测试场景样本中查找匹配的测试场景定义、测试辅助函数库,并将其拷贝至临时工作目录,然后实例化第二生成步骤中Main.c的#include定义;
第四生成步骤,用于从并行源代码生成配置中获取DATA信息,将第三生成步骤中的测试场景相关源代码和处理后的Main.c中的变量类型宏定义实例化为具体的基本变量类型或并行语言扩展的共享、SIMD变量类型,将编译指示宏定义实例化为具体的编译指示宏定义;
第五生成步骤,用于从并行源代码生成配置中获取MAKE信息,从Makefile样本中查找匹配的Makefile文件,拷贝至临时工作目录,然后将Makefile中TARGET实例化为测试用例英文名,SOURCE实例化为第三生成步骤中的测试场景相关.c文件和Main.c,HEADER实例化为第三生成步骤中的测试场景相关.h文件,接着根据全局并行编译选项和用例并行编译选项配置,并将Makefile中的CFLAGS和LDFLAGS实例化为具体的编译和链接选项;
其中,所述运行和监控用例并行作业处理流程包括:
第一步骤,用于对测试用例配置进行分析,获取并行作业提交所需的并行作业运行前准备配置和并行作业运行配置;
第二步骤,用于根据并行作业运行前准备配置信息,根据并行作业实际需要,从辅助数据目录中拷贝或运行辅助脚本新建或运行系统命令新建并行作业所需数据文件;
第三步骤,用于根据并行作业运行前准备配置信息,根据并行作业实际需要,在运行节点中分发和部署并行作业所需的并行目标代码、并行作业数据文件;
第四步骤,用于根据全局并行作业提交选项和用例并行作业运行配置,实例化并行作业提交程序的运行选项和并行目标代码的运行参数,并驱动并行作业提交程序提交运行用例并行目标代码;
第五步骤,用于根据并行作业状态监控选项,在预置的时间间隔内查看并行作业的运行状态是否为正常、并行作业运行结果文件是否有新记录;并行作业的运行状态异常或运行结果文件超出预置查看次数仍未更新时,申请结束并行作业;并行作业结束后,根据退出状态和结果文件的完整性,验证并行作业是否为正常退出,若异常退出则转至第四步骤重新提交,若正常退出或重新提交超出预置次数则转至第六步骤;
第六步骤,用于从运行节点中收集和汇总并行作业运行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380728.2A CN102880474B (zh) | 2012-10-09 | 2012-10-09 | 并行源代码生成、编译及驱动执行的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380728.2A CN102880474B (zh) | 2012-10-09 | 2012-10-09 | 并行源代码生成、编译及驱动执行的测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880474A CN102880474A (zh) | 2013-01-16 |
CN102880474B true CN102880474B (zh) | 2015-01-14 |
Family
ID=47481813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210380728.2A Active CN102880474B (zh) | 2012-10-09 | 2012-10-09 | 并行源代码生成、编译及驱动执行的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880474B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016037327A1 (en) * | 2014-09-10 | 2016-03-17 | Intel Corporation | Custom class library generation method and apparatus |
CN105487966B (zh) * | 2014-09-17 | 2023-07-25 | 深圳市雅阅科技有限公司 | 程序测试方法、装置及系统 |
CN105740132B (zh) * | 2016-01-25 | 2018-07-06 | 中国人民解放军国防科学技术大学 | 基于修改日志的软件包来源自动分析方法 |
CN106649087B (zh) * | 2016-10-08 | 2019-05-14 | 泰康保险集团股份有限公司 | 代码调试方法和装置 |
CN107480327B (zh) * | 2017-07-03 | 2020-11-13 | 北京东土军悦科技有限公司 | 一种仿真验证方法、装置和电子设备 |
CN107704392B (zh) * | 2017-09-30 | 2021-05-18 | 华为技术有限公司 | 一种测试用例的处理方法及服务器 |
CN109992516B (zh) * | 2019-04-03 | 2022-08-26 | 寒武纪(西安)集成电路有限公司 | 一种编程调试方法、装置及相关产品 |
CN113791770B (zh) * | 2021-11-15 | 2022-06-21 | 北京壁仞科技开发有限公司 | 代码编译器、代码编译方法、代码编译系统和计算机介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420714A (zh) * | 2011-08-29 | 2012-04-18 | 展讯通信(上海)有限公司 | 测试管理方法、测试管理系统总控制中心及测试管理系统 |
CN102567158A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 内存带宽的测试方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110048B (zh) * | 2009-12-28 | 2014-07-09 | 国际商业机器公司 | 用于基于框架的应用程序的回归测试选择方法和装置 |
-
2012
- 2012-10-09 CN CN201210380728.2A patent/CN102880474B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420714A (zh) * | 2011-08-29 | 2012-04-18 | 展讯通信(上海)有限公司 | 测试管理方法、测试管理系统总控制中心及测试管理系统 |
CN102567158A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 内存带宽的测试方法和装置 |
Non-Patent Citations (1)
Title |
---|
司品超等.《基于XML描述的构件测试框架》.《计算机工程与设计》.2009,第30卷(第15期),第3660-3663页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102880474A (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102880474B (zh) | 并行源代码生成、编译及驱动执行的测试方法 | |
CN106371813B (zh) | 一种基于Simulink的电动汽车电机控制器软件生成方法 | |
Georgiou et al. | Software development lifecycle for energy efficiency: techniques and tools | |
JP5209059B2 (ja) | ソース・コード処理方法、システム、及びプログラム | |
US10579349B2 (en) | Verification of a dataflow representation of a program through static type-checking | |
US20110083125A1 (en) | Parallelization processing method, system and program | |
CN104035781B (zh) | 一种快速开发异构并行程序的方法 | |
CN103440229A (zh) | 一种基于mic架构处理器的向量化优化方法 | |
CN101859244A (zh) | 多工具链工程构建方法及系统 | |
CN109933327A (zh) | 基于代码融合编译框架的OpenCL编译器设计方法和系统 | |
CN112527262A (zh) | 深度学习框架编译器宽度非一致自动向量优化方法 | |
CN103207786B (zh) | 渐进式智能回溯向量化代码调优方法 | |
US10198544B2 (en) | Method for improving OpenCL hardware execution efficiency | |
CN109753281B (zh) | 一种基于图形化编程的微电网能量管理策略可视化开发工具 | |
CN113836023A (zh) | 一种基于体系结构交叉检查的编译器安全性测试方法 | |
Schlütter et al. | Profiling hybrid HMPP applications with Score-P on heterogeneous hardware | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
CN104484230B (zh) | 基于近数据计算原则的多卫星数据中心工作流调度算法 | |
Liu et al. | Towards understanding bugs in python interpreters | |
US20230116546A1 (en) | Method for compilation, electronic device and storage medium | |
Wahler et al. | Migrating legacy control software to multi-core hardware | |
Biehl et al. | Automated architecture consistency checking for model driven software development | |
Hück et al. | Towards compiler-aided correctness checking of adjoint MPI applications | |
Han et al. | Genetic algorithm based parallelization planning for legacy real-time embedded programs | |
Zhang et al. | A source code analysis method with parallel acceleration for mining MPI application communication counts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |