论文部分内容阅读
超算系统是当前科学研究中不可或缺的计算工具,为了有效的利用超算资源,预测程序的运行时间成为了一项重要的工作。预测程序的运行时间可以为超算用户提供资源申请指导,为超算系统的调度程序提供调度依据,并且能够解决超算系统运营过程中的其他一些问题。程序插桩(program instrumentation,亦称程序插装)技术,是一种广泛应用于程序测试和性能监视领域的有效而且成熟的技术。这种技术可以获取到代码和程序运行逻辑相关的程序特性,这一特点也可以用于程序的特征提取工作中。在使用代码插桩技术提取到程序运行时特征之后,以被提取出的特征为模型输入,对应的程序运行时间为模型输出,可以建立程序运行时间预测模型。对此,本文基于代码插桩技术提出了一种预测并行程序运行时间的方法。本文的贡献如下:1.本文针对程序插桩任务实现了一套针对C/C++语言并行程序的插桩程序,通过对程序进行插桩的方式获取程序的分支、循环和变量值等代码相关特征.2.本文提出了针对大量特征的筛选方法以及对探针效应的控制方式,通过依时间和依重要性两种筛选方式在保证模型具有一定准确性的同时控制插桩代码的探针效应在1%左右,从而使得我们的工作具有实用价值。3.最后本文使用常用的预测模型,以特征的观测值为输入,对应的程序运行时间为输出,对程序的运行时间进行了建模和预测,并使用实验对本文提出的方法进行了验证。在本文的最后,使用了 Graph500和GalaxSee程序对文中提出的方法进行了验证。实验结果表明,在使用随机森林方法并对程序特征进行多项式展开的情况下,当训练集为1600组数据测试集为400组数据时,本文提出的方法在Graph500和GalaxSee程序的运行时间预测问题上的误差可以分别达到平均12.76%和16.62%,中值3.15%和6.88%,达到了较好的效果并符合实际应用需求。