Optimizing data-intensive computations in existing libraries with split annotations

Optimizing data-intensive computations in existing libraries with split annotations
复制标题

DOI:
10.1145/3341301.3359652
复制
发表时间:
2018-10
期刊:
Proceedings of the 27th ACM Symposium on Operating Systems Principles
影响因子:
--
通讯作者:
Shoumik Palkar;M. Zaharia
Shoumik Palkar;M. Zaharia
中科院分区:
其他
文献类型:
--
作者:
Shoumik Palkar;M. Zaharia

文献摘要

被引文献

相似文献

主内存与CPU之间的数据运动是平行数据密集型应用中的主要瓶颈。作为响应,研究人员提出了使用编译器和中间表示(IRS)的提议,这些编译器和中间表示,例如在现有高级API(例如Numpy和Tensorflow)下进行诸如环路融合之类的优化。即使这些技术通常不需要对用户应用程序进行更改,它们仍需要对库本身进行侵入性更改:通常,库开发​​人员必须使用新的IR重写每个功能。在本文中,我们提出了一种称为“拆分注释”(SAS)的新技术,该技术可以通过未修改的库功能进行关键数据运动优化。 SAS仅要求开发人员注释函数并实现指定如何在库中划分数据的API。注释和API描述了如何启用跨函数数据管道和并行化,同时尊重每个函数的正确性约束。我们在一个名为Mozart的系统中为SAS实施了平行的运行时间。我们表明,莫扎特可以在英特尔MKL和Pandas等图书馆中加速工作量,而没有图书馆修改。莫扎特还通过需要重写库的解决方案提供竞争性竞争,有时可以通过利用现有的手工优化代码来胜过2倍的系统。
Data movement between main memory and the CPU is a major bottleneck in parallel data-intensive applications. In response, researchers have proposed using compilers and intermediate representations (IRs) that apply optimizations such as loop fusion under existing high-level APIs such as NumPy and TensorFlow. Even though these techniques generally do not require changes to user applications, they require intrusive changes to the library itself: often, library developers must rewrite each function using a new IR. In this paper, we propose a new technique called split annotations (SAs) that enables key data movement optimizations over unmodified library functions. SAs only require developers to annotate functions and implement an API that specifies how to partition data in the library. The annotation and API describe how to enable cross-function data pipelining and parallelization, while respecting each function's correctness constraints. We implement a parallel runtime for SAs in a system called Mozart. We show that Mozart can accelerate workloads in libraries such as Intel MKL and Pandas by up to 15x, with no library modifications. Mozart also provides performance gains competitive with solutions that require rewriting libraries, and can sometimes outperform these systems by up to 2x by leveraging existing hand-optimized code.