嵌套循环分治算法的模块综合(扩展版)
Modular Synthesis of Divide-and-Conquer Parallelism for Nested Loops (Extended Version)
摘要:
我们提出了一种自动生成分治并行实现顺序嵌套循环的方法。我们关注一类遍历只读多维集合(列表或数组)并计算这些集合上的函数的循环。我们的方法是模块化的,因为内部循环嵌套被抽象出来,产生一个更简单的循环嵌套并行化。然后,循环嵌套的汇总版本被并行化。本文所解决的主要挑战是,要执行每一步中所需的代码转换,循环嵌套可能必须(自动)增加额外的计算,以使抽象和/或并行化任务成为可能。我们提出的理论结果来证明我们的模块化方法的正确性,和自动化的算法解决方案。实验结果表明,我们的方法可以并行化高度非平凡的循环嵌套有效。
英文摘要:
We propose a methodology for automatic generation of divide-and-conquer parallel implementations of sequential nested loops. We focus on a class of loops that traverse read-only multidimensional collections (lists or arrays) and compute a function over these collections. Our approach is modular, in that, the inner loop nest is abstracted away to produce a simpler loop nest for parallelization. Then, the summarized version of the loop nest is parallelized. The main challenge addressed by this paper is that to perform the code transformations necessary in each step, the loop nest may have to be augmented (automatically) with extra computation to make possible the abstraction and/or the parallelization tasks. We present theoretical results to justify the correctness of our modular approach, and algorithmic solutions for automation. Experimental results demonstrate that our approach can parallelize highly non-trivial loop nests efficiently.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。