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