Skip to main content
QUICK REVIEW

[论文解读] A Tale of Three Runtimes

Nicolas Vasilache, Muthu Manikandan Baskaran|arXiv (Cornell University)|Sep 5, 2014
Parallel Computing and Optimization Techniques参考文献 36被引用 5
一句话总结

本文提出一种自动化的、由编译器驱动的方法,通过分层映射策略和与运行时无关的 C++ 抽象层,从顺序 C 代码自动生成事件驱动的、基于元组空间的程序,适用于三种不同的运行时环境——Intel 的 CnC、ETI 的 SWARM 和 OCR。该方法利用可重排循环类型,实现高效且保守的同步机制,以极低的开销达到高性能,尤其在最优任务粒度下表现突出。

ABSTRACT

This contribution discusses the automatic generation of event-driven, tuple-space based programs for task-oriented execution models from a sequential C specification. We developed a hierarchical mapping solution using auto-parallelizing compiler technology to target three different runtimes relying on event-driven tasks (EDTs). Our solution benefits from the important observation that loop types encode short, transitive relations among EDTs that are compact and efficiently evaluated at runtime. In this context, permutable loops are of particular importance as they translate immediately into conservative point-to-point synchronizations of distance 1. Our solution generates calls into a runtime-agnostic C++ layer, which we have retargeted to Intel's Concurrent Collections (CnC), ETI's SWARM, and the Open Community Runtime (OCR). Experience with other runtime systems motivates our introduction of support for hierarchical async-finishes in CnC. Experimental data is provided to show the benefit of automatically generated code for EDT-based runtimes as well as comparisons across runtimes.

研究动机与目标

  • 实现从多个运行时环境的顺序 C 规范中自动、可移植地生成事件驱动的、基于元组空间的程序。
  • 解决将顺序代码映射到深度内存层次结构上的可扩展、细粒度任务化执行模型的挑战。
  • 通过循环类型分析优化任务创建和依赖管理,降低细粒度任务调度的运行时开销。
  • 通过统一的、可重定向的抽象层,实现高性能内核在不同运行时系统间的跨运行时比较与移植。
  • 通过可移植、可重用的代码生成技术,支持未来架构演进,包括具备深度内存层次结构的百亿亿级系统。

提出的方法

  • 该方法利用自动并行化编译器技术,将循环嵌套重构为逻辑树结构,支持分层任务分解。
  • 识别循环类型(尤其是可重排循环),以推断事件驱动任务(EDT)之间的保守、距离为 1 的点对点同步。
  • 通过与运行时无关的 C++ 层(RAL)抽象常见 EDT 编程模型模式,支持在 CnC、SWARM 和 OCR 之间进行重定向。
  • 该框架支持分层的异步-完成机制,提升大规模执行中的负载均衡性,并减少同步瓶颈。
  • 从重构后的循环中提取依赖信息,并在编译时生成基于元组空间的任务依赖关系。
  • 使用表达式模板表示多维依赖空间,实现在运行时高效、可扩展的依赖关系解析。

实验结果

研究问题

  • RQ1一个单一的基于编译器的框架能否自动为多个基于 EDT 的运行时环境生成高效且可移植的事件驱动代码?
  • RQ2可重排循环类型的使用如何实现事件驱动任务图中高效且保守的同步?
  • RQ3在不同运行时环境下,细粒度任务管理的性能开销如何?其随任务大小的变化趋势如何?
  • RQ4统一的、可重定向的抽象层能否降低在异构运行时系统间移植高性能内核的工作量?
  • RQ5任务粒度对事件驱动执行模型中有效工作比和整体性能的影响是什么?

主要发现

  • 该框架成功地在 Intel 的 CnC、ETI 的 SWARM 和 Open Community Runtime(OCR)上完成重定向,证明了跨运行时的可移植性。
  • 在最优任务粒度(例如 16-16-16 瓦片)下,SOR 内核在 OCR 上的性能达到最高 14.39 Gflop/s,表现出强大的可扩展性。
  • 在粒度为 4 时,OCR 上超过 85% 的非空闲时间用于有效工作,表明在中等任务大小下开销较低。
  • 在更细粒度下(例如 10-10-100),有效工作比下降至 10%,高达 80% 的时间消耗在任务窃取和队列管理上,揭示了一个关键的性能阈值。
  • 管理细粒度 EDT 的开销仍然很高,尤其是在任务大小低于某一临界值时,表明运行时系统仍需进一步优化。
  • 利用可重排循环实现了立即、保守的同步,且距离为 1,简化了依赖管理并提升了性能。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。