并行循环程序模板与最大流问题解析
在并行计算领域,如何高效地分析和解决并行程序中的数据流动和资源分配问题是一个关键挑战。本文将介绍并行循环程序模板的相关概念,包括其语法、语义,以及如何利用参数化图模板解决最大 s - t 流问题。
并行循环程序模板
并行程序可以通过参数化图模板进行建模。参数化图模板对应程序的源代码,其实例化对应程序的执行。这种建模方式使得我们可以通过分析与程序源代码规模相当的参数化图模板,来研究程序执行的特性。
参数化图模板能够对嵌套循环程序进行建模,例如投影嵌套循环和简单重叠访问程序。程序接收一组多维输入数组 (A_1, \ldots, A_k),目标是输出一个多维数组 (B),并且可以使用多个多维临时数组 (C_1, \ldots, C_{k’})。对于任意数组 (D),其第 (i) 维的大小为 (size_i(D))。
我们允许基本操作和并行嵌套循环的任意组合,其中循环边界仅依赖于输入数组的大小。同时,支持并行归约来聚合循环结果,但不允许数据相关的控制流,不过内存访问的位置可以是数据相关的。能够用这种方式表示的算法包括矩阵乘法、卷积和互相关等。
语法
模板图的顶点会根据其在程序中的功能标注类型。每个模板图包含输入内存顶点 (A_1, \ldots, A_k)、输出内存顶点 (B) 和临时内存顶点 (C_1, \ldots, C_{k’})。内存顶点可以有任意的入度和出度,并且属于根模板。其他顶点的出度通常为 1(除非另有说明),其输出边称为输出边。为了区分顶点的输入,输入边会依次编号。
以下是我们考虑的控制流构造(边界顶点):
- Parfor
超级会员免费看
订阅专栏 解锁全文

171万+

被折叠的 条评论
为什么被折叠?



