一句话:用可并行生成的替代数据满足运行时依赖,从而提升非确定性多线程程序的线程级并行度。
该论文关注商品处理器上线程级并行(TLP)受运行时依赖限制的问题。作者观察到,对非确定性程序而言,其中一部分实际依赖可以用能够并行生成的替代数据来满足,从而在不改变程序最终输出的前提下提升 TLP。为验证可行性,论文提出了一组 C++ 语言扩展,并基于此设计实现了相应的编译器、自动调优器(autotuner)、性能剖析器和运行时系统。系统在 28 核 Intel 平台上对六个知名非确定性多线程基准程序进行评测,几何平均性能提升 158.2%。该工作把语言扩展、编译变换与运行时支持结合起来,为挖掘非确定性程序中原本被依赖关系压制的并行性提供了新途径。
The demand for thread-level-parallelism (TLP) on commodity processors is endless as it is essential for gaining performance and saving energy. However, TLP in today's programs is limited by dependences that must be satisfied at run time. We have found that for nondeterministic programs, some of these actual dependences can be satisfied with alternative data that can be generated in parallel, thus boosting the program's TLP. Satisfying these dependences with alternative data nonetheless produces final outputs that match those of the original nondeterministic program. To demonstrate the practicality of our technique, we describe the design, implementation, and evaluation of our compilers, autotuner, profiler, and runtime, which are enabled by our proposed C++ programming language extensions. The resulting system boosts the performance of six well-known nondeterministic and multi-threaded benchmarks by 158.2% (geometric mean) on a 28-core Intel-based platform.
DOI 原文 ·
@inproceedings{paperbot4293,
title = {Unconventional Parallelization of Nondeterministic Applications},
author = {Enrico A. Deiana and Vincent St-Amour and Peter A. Dinda and Nikos Hardavellas and Simone Campanoni},
booktitle = {ASPLOS},
year = {2018},
doi = {10.1145/3173162.3173181}
}