论文部分内容阅读
性能建模是高性能计算领域中一个非常重要的问题。通过对历史数据、领域知识等对并行程序的运行性能进行建模,以帮助运行时间预测、性能调优等。近年来,一些学者将机器学习应用在高性能计算的性能建模中并取得了一些研究成果。机器学习可以从历史数据中学习知识,发现并行程序的运行性能和参数之间的规律。但是在根据小规模的运行数据对其大规模的运行性能进行预测时,由于独立同分布假设不成立,使用单层模型方法无法对大规模下的性能进行准确的预测。其中小规模指处理器数量在历史运行数据的处理器范围内,大规模指处理器数量超出历史运行数据的处理器数量范围。
针对该问题,本文提出了两层模型方法。内推层对应用待预测数据的程序输入参数在小规模处理器下的运行进行预测;外推层根据内推层预测结果,建立反映程序输入参数固定时,程序性能和处理器数量之间关系的强可扩放性模型,对大规模处理器下的运行性能进行预测。本文的主要工作如下:
1.针对根据小规模处理器下历史数据对大规模处理器下性能进行预测的问题,提出了两层模型框架。两层模型框架的内推层使用随机森林对小规模处理器下的性能进行预测,获得高精度内推预测,并且内推误差具有随机性;在外推层使用多任务学习降低内推层误差对外推强可扩放性模型的影响,对大规模处理器下的运行时间进行合理外推。
2.在真实的超算平台上实验,分别使用四种单层模型方法和提出的两层模型方法对两个高性能计算应用MCB和Kripke进行性能建模,并对单层模型方法和两层模型方法在两个应用上的表现进行了比较和分析。实验结果表明,和单层模型相比,两层模型方法对大规模处理器下的性能预测误差更低。
3.对内推层模型和外推层模型分别进行分析。通过对随机森林预测误差的分析,验证了随机森林作为内推层模型的有效性。通过单任务学习和多任务学习之间的对比,验证了外推层使用多任务学习的必要性。此外,还分析了聚类在两层模型中的作用。
针对该问题,本文提出了两层模型方法。内推层对应用待预测数据的程序输入参数在小规模处理器下的运行进行预测;外推层根据内推层预测结果,建立反映程序输入参数固定时,程序性能和处理器数量之间关系的强可扩放性模型,对大规模处理器下的运行性能进行预测。本文的主要工作如下:
1.针对根据小规模处理器下历史数据对大规模处理器下性能进行预测的问题,提出了两层模型框架。两层模型框架的内推层使用随机森林对小规模处理器下的性能进行预测,获得高精度内推预测,并且内推误差具有随机性;在外推层使用多任务学习降低内推层误差对外推强可扩放性模型的影响,对大规模处理器下的运行时间进行合理外推。
2.在真实的超算平台上实验,分别使用四种单层模型方法和提出的两层模型方法对两个高性能计算应用MCB和Kripke进行性能建模,并对单层模型方法和两层模型方法在两个应用上的表现进行了比较和分析。实验结果表明,和单层模型相比,两层模型方法对大规模处理器下的性能预测误差更低。
3.对内推层模型和外推层模型分别进行分析。通过对随机森林预测误差的分析,验证了随机森林作为内推层模型的有效性。通过单任务学习和多任务学习之间的对比,验证了外推层使用多任务学习的必要性。此外,还分析了聚类在两层模型中的作用。