- 简介现代科学发现越来越依赖高性能计算来进行复杂的建模和模拟。提高并行程序性能的一个关键挑战是高效地将任务映射到处理器以及将数据映射到内存,这一过程由称为“映射器”的复杂低级系统代码控制。开发高性能映射器需要数天的手动调优,这对于没有系统专业知识的领域科学家来说是一个重大障碍。我们引入了一个框架,通过生成优化自动化映射器的开发,利用超出标量性能指标的更丰富的反馈。我们的方法包括代理-系统接口,该接口包含一种特定领域的语言(DSL),用于抽象化系统代码的低级复杂性并定义结构化的搜索空间,以及AutoGuide机制,它将原始执行输出解释为可操作的反馈。与OpenTuner等传统强化学习方法不同,后者仅依赖于标量反馈,我们的方法在远少的迭代次数中找到更优的映射器。仅需10次迭代,我们的方法就能超越OpenTuner在1000次迭代后的表现,性能提升3.8倍。我们的方法找到的映射器在九个基准测试中超越了专家编写的映射器,最高可达1.34倍的加速比,同时将调优时间从几天减少到几分钟。
-
- 图表
- 解决问题该论文试图解决高性能计算中映射任务到处理器和数据到内存的效率问题,这是一个关键挑战,特别是在并行程序性能提升方面。这个问题对于没有系统专业知识的领域科学家来说是一个显著的障碍,因为开发高性能映射器需要大量的手动调优。
- 关键思路论文的关键思路是引入一个自动化框架,利用生成优化来开发映射器,通过Agent-System Interface和Domain-Specific Language (DSL) 抽象化低级别的系统代码复杂性,并定义结构化的搜索空间。此外,AutoGuide机制将原始执行输出转化为可操作的反馈,提供比传统方法更丰富的反馈。这种方法相比依赖单一标量反馈的传统强化学习方法(如OpenTuner),能够在更少的迭代中找到更优的映射器。
- 其它亮点实验设计包括九个基准测试,结果显示新方法在仅10次迭代中就超越了OpenTuner在1000次迭代后的表现,实现了3.8倍的性能提升,并且在多个基准上超过了专家编写的映射器,最高达到1.34倍的速度提升。更重要的是,该方法将调优时间从几天缩短到了几分钟。论文未提及是否开源代码,但其高效性和快速收敛值得进一步研究。
- 最近在这个领域的相关研究包括使用机器学习技术优化并行程序性能的工作,例如《Learning to Optimize Parallel Programs》和《Deep Learning for Performance Modeling of Parallel Applications》。其他相关的研究还包括《Automated Tuning of Parallel Applications Using Reinforcement Learning》和《Efficient Resource Mapping in HPC Systems via Machine Learning》。
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流