一句话:提出基于多维同态的形式化分解/重组方法,可自动生成并调优数据并行代码。
数据并行计算(如线性代数、模板计算)要在 CPU/GPU 等现代体系结构上高效运行,关键在于针对存储与核心层次进行分解与重组,但现有高层代码生成方法常局限于特定计算类或架构,或依赖复杂且易错的用户引导优化。本文基于多维同态(MDH)的代数形式化,提出系统化的(解/重)组合方法,可覆盖广泛的数据并行计算和多种并行架构;并据此构造正确构造、参数化的 cache blocking 与并行化策略,用同一形式化表达调度式、多面体等现有策略。实验通过自动调优参数,在真实数据集上的线性代数、模板、量子化学、数据挖掘及深度学习相关计算中,性能超过 NVIDIA cuBLAS/cuDNN、Intel oneMKL/oneDNN 等厂商手优化方案。
Data-parallel computations, such as linear algebra routines and stencil computations, constitute one of the most relevant classes in parallel computing, e.g., due to their importance for deep learning. Efficiently de-composing such computations for the memory and core hierarchies of modern architectures and re-composing the computed intermediate results back to the final result—we say (de/re)-composition for short—is key to achieve high performance for these computations on, e.g., GPU and CPU. Current high-level approaches to generating data-parallel code are often restricted to a particular subclass of data-parallel computations and architectures (e.g., only linear algebra routines on only GPU or only stencil computations), and/or the approaches rely on a user-guided optimization process for a well-performing (de/re)-composition of computations, which is complex and error prone for the user. We formally introduce a systematic (de/re)-composition approach, based on the algebraic formalism of Multi-Dimensional Homomorphisms (MDHs). Our approach is designed as general enough to be applicable to a wide range of data-parallel computations and for various kinds of target parallel architectures. To efficiently target the deep and complex memory and core hierarchies of contemporary architectures, we exploit our introduced (de/re)-composition approach for a correct-by-construction, parametrized cache blocking, and parallelization strategy. We show that our approach is powerful enough to express, in the same formalism, the (de/re)-composition strategies of different classes of state-of-the-art approaches (scheduling-based, polyhedral, etc.), and we demonstrate that the parameters of our strategies enable systematically generating code that can be fully automatically optimized (auto-tuned) for the particular target architecture and characteristics of the input and output data (e.g., their sizes and memory layouts). Particularly, our experiments confirm that via auto-tuning, we achieve higher performance than state-of-the-art approaches, including hand-optimized solutions provided by vendors (such as NVIDIA cuBLAS/cuDNN and Intel oneMKL/oneDNN), on real-world datasets and for a variety of data-parallel computations, including linear algebra routines, stencil and quantum chemistry computations, data mining algorithms, and computations that recently gained high attention due to their relevance for deep learning.
@article{paperbot2670,
title = {(De/Re)-Composition of Data-Parallel Computations via Multi-Dimensional Homomorphisms},
author = {Ari Rasch},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {46},
number = {3},
year = {2024},
doi = {10.1145/3665643}
}