中文

利用分割注解在现有库中优化数据密集型计算

分布式、并行与集群计算 2019-09-20 v2 性能

摘要

主存与CPU之间的数据移动是并行数据密集型应用的主要瓶颈。为此,研究者提出了在现有高层API(如NumPy和TensorFlow)下使用编译器和中间表示(IRs)来应用循环融合等优化的方案。尽管这些技术通常不需要更改用户应用,但它们需要对库本身进行侵入式修改:库开发者往往必须使用新IR重写每个函数。本文提出一种称为分割注解(SAs)的新技术,可在未修改的库函数上实现关键的数据移动优化。SAs仅需开发者注解函数并实现指定如何在库中划分数据的API。该注解与API描述了如何在不违反各函数正确性约束的前提下实现跨函数数据流水线与并行化。我们在名为Mozart的系统中实现了SAs的并行运行时。我们展示Mozart可加速Intel MKL和Pandas等库中的工作负载达15倍,且无需修改库。Mozart还提供了与需要重写库的方案相竞争的性能提升,并且有时可通过利用现有手工优化代码使这些系统的性能高出至多2倍。

关键词

引用

@article{arxiv.1810.12297,
  title  = {Optimizing Data-Intensive Computations in Existing Libraries with Split Annotations},
  author = {Shoumik Palkar and Matei Zaharia},
  journal= {arXiv preprint arXiv:1810.12297},
  year   = {2019}
}

备注

Appearing in SOSP 2019, Huntsville, ON, CA