用于开发 Imagine 流程序的局部性优化算法
1. 引言
Imagine 是一种可编程流处理器,它实现了高效的内存层次结构,包括多个带有 256 字暂存单元(SP)的本地寄存器文件(LRF)、一个 128 KB 的流寄存器文件(SRF)和片外 DRAM,以支持高性能计算。Imagine 上的流应用程序由一些计算内核组成,这些内核操作被称为流的数据记录序列。当流应用程序在 LRF 和 SRF 中呈现出良好的局部性时,Imagine 能够充分利用众多算术逻辑单元(ALU),从而实现高性能。然而,科学程序的直接编码往往无法展现出足够的局部性,难以有效利用 Imagine 的强大处理能力。因此,我们探索了一种新颖的局部性优化算法,用于在 Imagine 中开发流程序,以实现高内存性能。
2. D&C 矩阵
大多数科学应用程序的基本结构是循环和数组。我们的方法是为给定程序构建一个名为数据与计算矩阵(D&C 矩阵)的矩阵。D&C 矩阵的每一行代表一个数组,每一列描述一个循环的访问模式。矩阵中第 i 行(记为 Di)和第 j 列(记为 Lj)位置的元素对应一个映射 mij: Di→Lj。我们定义计算距离 Cdistance(x,y) 为 x 和 y 之间的迭代次数,即 Cdistance(x,y)=y - x;数据距离 Ddistance(c,d) 为两个数据布局之间的间隔,即 Ddistance(c,d)=d - c。
此外,我们将循环迭代空间展开视为流组织模式,其公式如下:
[
ORG(i,j) = \sum_{x = 0}^{max(x)} \left{ L_j(x) | x \in m_{ij}^{-1}(L_j)
超级会员免费看
订阅专栏 解锁全文
361

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



