Advanced Data Movement
顺序性与并行性¶
在编程中,重复性任务十分常见。这类任务既可通过循环迭代执行,也可并行执行——后者需要硬件与软件对并行化的共同支持。
当前最广泛采用的并行化范式是 Single Program, Multiple Data(SPMD,单程序多数据)。在该范式下,代码只编写一次,却可同时以多个实例运行;各实例彼此独立,除非显式实现同步。Choreo 采用这一范式,并通过 parallel-by 块对并行性进行抽象。
相比之下,循环是更为直观的概念,也是编写顺序代码最常见的方式。在 Choreo 中,程序员可使用 with-in + foreach 块构造循环。该结构支持 do-while 风格的迭代,在多 buffer 等场景中尤为有用——这与 Choreo 以编排数据搬运为主要关注点是一致的。
下文将深入讨论如何在 Choreo 中构造循环与实现并行。