Algorithm synthesis is a newly emerging branch of program synthesis, targeting to automatically apply a predefined class of algorithms to a user-provided program. In algorithm synthesis, one popular topic is to synthesize divide-and-conquer-style parallel programs. Existing approaches on this topic rely on the syntax of the user-provided program and require it to follow a specific format, namely single-pass. In many cases, implementing such a program is still difficult for the user. Therefore, in this paper, we study the black-box synthesis for divide-and-conquer which removes the requirement on the syntax and propose a novel algorithm synthesizer AutoLifter. Besides, we show that AutoLifter can be generalized to other algorithms beyond divide-and-conquer. We propose a novel type of synthesis tasks, namely lifting problems, and show that AutoLifter can be applied to those algorithms where the synthesis task is an instance of lifting problems. To our knowledge, AutoLifter is the first algorithm synthesizer that generalizes across algorithm types. We evaluate AutoLifter on two datasets containing 57 tasks covering five different algorithms. The results demonstrate the effectiveness of AutoLifter for solving lifting problems and show that though AutoLifter does not access the syntax of the user-provided program, it still achieves competitive performance compared with white-box approaches for divide-and-conquer.
翻译:ALgorithm 合成是一个新出现的程序合成分支, 目标是将预定义的算法类别自动应用到用户提供的程序中。 在算法合成中, 一个流行的话题是合成分裂和共化式平行程序。 有关这个主题的现有方法依赖于用户提供的程序的语法, 并要求它遵循一种特定的格式, 即单通路。 在许多情况下, 对用户来说, 实施这样的程序仍然很困难。 因此, 我们在本文件中, 我们研究用于分解和共解的黑盒合成方法, 该方法可以取消对语法的要求, 并提议一个新的算法合成器 AutoLifter 。 此外, 我们显示 AutoLifter 能够被广泛应用到除分解和共和共型程序之外的其他算法 。 我们提议了一种新型的合成方法, 即提升问题, 并显示Autoliferal 的算法方法, 仍然可以应用AutoL 和Autal- developtional- transal 等两个包含57个算器任务, 我们评估了57个AAutal- lif- 解算法的算法的读程序,, 显示它如何解算算算法的算法的算算算算算法的算法的计算结果,, 显示它如何的算算算算算算法的算法的算法的算算法的算算法的算法的算法的算法的算法的算算算法的算法的算算算算法的算方法, 。