Cyclotron: Compilation of Recurrences to Distributed and Systolic Architectures
Shiv Sundram, Akhilesh Balasingam, Nathan Zhang, Kunle Olukotun, Fredrik Kjolstad
我们介绍了Cyclotron,一个使用递归方程表达流数据流算法的框架和编译器,然后将其可移植编译为相互关联的处理器的分布式拓扑。 我们的框架提供了一种在逻辑张量上重复的输入语言,然后将其降低到逻辑迭代空间上复发的中间语言,最后进入每个处理器特有的发送,接收和计算操作的程序。 在Cyclotron的IR中,程序进行了优化,使得外部内存交互仅限于迭代空间的边界。 在内部迭代空间中,所有数据访问都成为本地数据:数据访问驻留在本地快速存储器或邻近处理单元中的目标值,避免了昂贵的内存移动。 我们提供一种调度语言,允许用户定义数据如何在处理器之间流式传输和广播,从而通过处理元素的分布式拓扑结构实现计算内核的管道执行。 我们通过将我们的 IR 编译为系统阵列和芯片样式分布式硬件的可重新配置模拟器以及分布式内存 CPU 集群,展示了我们方法的可移植性。 在模拟可重新配置设置中,我们使用编译器进行硬件设计空间探索,其中可以指定链接成本和延迟。 在分布式 CPU 设置中,我们展示了如何使用 recurrences 和调度语言来表达各种矩阵乘法例程(Cannon、SUMMA、PUMMA、重量固定)和求解器(Triangular solve 和 Cholesky)。 对于矩阵乘法和三角形求解,我们生成与 ScaLAPACK 竞争的分布式实现。
We present Cyclotron, a framework and compiler for using recurrence equations to express streaming dataflow algorithms, which then get portably compiled to distributed topologies of interlinked processors. Our framework provides an input language of recurrences over logical tensors, which then gets lowered into an intermediate language of recurrences over logical iteration spaces, and finally into programs of send, receive, and computation operations specific to each individual processor. In Cyc...