中文

部分指定实现的表示及其在GPU上线性代数核优化中的应用

编程语言 2019-04-09 v1

摘要

传统的优化编译器依赖重写规则迭代地应用程序变换。这种迭代方式将优化机会隐藏在中间变换步骤之后。例如,向量化只能应用于嵌套循环的最内层:必须先执行循环交换,才能考虑外层循环的向量化。相反,我们提出一种实现框架,将程序表示为可能实现决策的集合。指定一个决策可能以双向方式影响其他决策:指定某循环必须向量化会阻止其他循环嵌套于其内;反之,指定某循环为外层循环将阻止其被向量化。这些优化决策可交换,消除了遍历排序问题。我们提出一个约束编程系统来形式化定义、表示和探索此类实现空间。我们还提出一种结合树搜索与分支定界的探索策略;该策略的优势和新颖性在于对一组可能实现的执行时间下界的解析模型。我们在GPU上线性代数核的实现空间构建与探索中展示了我们的方法。我们表明该搜索空间具有足够表达能力以表示从根本上改变生成代码结构的复杂决策。我们还给出了与原生GPU库性能相当的初步结果。

关键词

引用

@article{arxiv.1904.03383,
  title  = {On the Representation of Partially Specified Implementations and its Application to the Optimization of Linear Algebra Kernels on GPU},
  author = {Ulysse Beaugnon and Basile Clément and Nicolas Tollenaere and Albert Cohen},
  journal= {arXiv preprint arXiv:1904.03383},
  year   = {2019}
}