Page 136 - 《软件学报》2025年第5期
P. 136
2036 软件学报 2025 年第 36 卷第 5 期
练和更新代理模型, 而是通过被测 MPI 程序的实际执行来计算每一测试用例生成任务 task j 中种群内进化个体的
适应值. 除了上面提到的无需训练和更新代理模型, 以及基于实际执行 MPI 程序计算进化个体适应值外, Approach-
NoMod 的其他细节与本文提出方法完全相同. 此后, 分别使用所提方法和 Approach-NoMod 生成期望的测试用例,
如果使用所提方法生成测试用例的效率和有效性更高, 那么, 表示基于代理模型能够降低 MPI 程序路径覆盖测试
成本.
RQ3. 所提方法能否提高测试用例生成的有效性与效率?
为了验证 RQ3, 我们对比所提方法和文献 [30] 中已有方法, 记为 Approach-EvoGen. 需注意的是, Approach-
EvoGen 同样研究了 MPI 程序路径覆盖测试用例生成问题, 且为研究该问题的最新成果. 为更好地理解 Approach-
EvoGen, 其工作原理给定如下: 首先设计了通信序列影响候选测试用例覆盖性能的评价指标, 并用于划分所有目
标路径为若干组; 然后, 构建了每组目标路径对应的测试用例集生成优化模型; 最后, 基于多任务进化优化算法并
行求解每一模型, 用于生成覆盖每组目标路径的测试用例集. 可以看出, Approach-EvoGen 仅从全局方面分析某一
候选测试用例是否覆盖了目标路径, 而所提方法在每一优化任务中从局部方面寻找覆盖目标路径内每条目标子路
径的最优进化个体, 并基于最优进化个体, 形成候选测试用例集, 进而从全局方面验证某一候选测试用例是否覆盖
了目标路径, 最终形成覆盖所有目标路径的测试用例集. 显然, 所提方法恰好符合局部寻优加速全局最优的原理.
鉴于此, 这里分别使用所提方法和 Approach-EvoGen 生成期望的测试用例, 如果使用所提方法生成测试用例的效
率和有效性更高, 那么, 证明所提方法能够提高测试用例生成的有效性与效率.
3.2 被测 MPI 程序
本节选择 7 个基准 MPI 程序作为被测程序, 这些程序的基本信息如表 1 所示. 表 1 中, IMB-MPI1 是 IMB 公
司开发的用于进行 MPI 基准测试的组件, 用于检查 MPI-1 版本原语的性能 [31] ; HPL 是用于测试并行集群 Linpack
性能的基准 MPI 程序 [32] ; SUSY-HMC 是一个用于研究四维超对称杨-米尔斯理论的物理模拟 MPI 程序 [33] ;
DepSolver、Kfray 和 ClustalW 均引用于文献 [34] 中的 MPI 程序, 其中, DepSolver 是一个并行多媒体 3D 静电解
算器, Kfray 是一个用于创建逼真图像的光线追踪程序, ClustalW 是多基因序列比对的常用工具; mpiBLAST 为基
因匹配 MPI 程序, 用于并行匹配所查询序列 (DNA 或氨基酸) 和数据库内序列之间相似的基因组序列片段 [35] .
表 1 被测 MPI 程序基本信息
被测程序 进程数 通信原语数 代码行数 目标路径数
IMB-MPI1 4 42 7 092 1 115
DepSolver 6 63 8 988 398
Kfray 8 116 12 728 665
HPL 3 70 15 699 3 469
SUSY-HMC 16 132 19 201 2 031
ClustalW 24 178 23 265 2 537
mpiBLAST 17 397 582 179 12 792
基于表 1 中被测 MPI 程序基本信息, 可以发现所选定的程序在进程数量、通信原语数、代码行数等方面分
布较为广泛. 因此, 所选定的被测程序具有很好的代表性. 针对这些代表性程序, 获取的基本目标路径集也具有一
定的典型性. 鉴于此, 如果所提方法能够高效求解这些代表性程序的覆盖测试问题, 那么相应的实验结果将更容易
推广到其他 MPI 程序, 即具有良好的可扩展性.
3.3 实验设置
实验中使用的集群系统含有 24 个 H3C NaviData 5200 计算节点, 整个系统的计算资源超过 500 物理核, 可提
供超过 16 Tflops 的单精度浮点计算整体理论峰值, 内存容量超过 4.5 TB, 物理可用空间超过 300 TB. 此外, 实验
使用 MPI+C/C++编程语言和 Shark 机器学习库 [36] .
注意, 本文将采用文献 [4] 中提出的路径选择方法来得到表 1 中每一被测 MPI 程序的基本目标路径集, 记基