SPADA: A Spatial Dataflow Architecture Programming Language
Lukas Gianinazzi, Tal Ben-Nun, Torsten Hoefler
像Cerebras Wafer-Scale Engine这样的空间数据流架构通过利用跨处理元素(PE)和本地化计算之间的分布式内存,在AI和科学应用中实现卓越的性能。 然而,由于需要通过可重新配置的片上网络和由数据到达触发的异步计算来明确编排数据移动,因此对这些架构进行编程仍然具有挑战性。 现有的FPGA和CGRA编程模型强调循环调度,但忽略了空间数据流架构的独特功能,特别是常规网格上的高效数据流和复杂的路由管理。 我们介绍了SPADA,一种编程语言,可以精确控制数据位置,数据流模式和异步操作,同时抽象架构特定的低级细节。 我们为 SPADA 引入了严格的数据流语义框架,该框架定义了路由正确性、数据竞赛和死锁。 此外,我们设计和实现了一个针对Cerevaris CSL的编译器,具有多级降低。 SPADA既是高级编程接口,也是特定领域语言(DSL)的中间表示,我们用GT4Py模板DSL演示。 SPADA使开发人员能够比CSL少6-8倍的代码表达复杂的并行模式 - 包括管道减少和多维模板 - 在三个数量级之间几乎理想的弱缩放。 通过统一单个模型下的空间数据流架构编程,SPADA推进了这些新兴高性能计算平台的理论基础和实践可用性。
Spatial dataflow architectures like the Cerebras Wafer-Scale Engine achieve exceptional performance in AI and scientific applications by leveraging distributed memory across processing elements (PEs) and localized computation. However, programming these architectures remains challenging due to the need for explicit orchestration of data movement through reconfigurable networks-on-chip and asynchronous computation triggered by data arrival. Existing FPGA and CGRA programming models emphasize loop...