并行数值碎片化子程序的 LuNA 库介绍
1. 背景与动机
在许多项目中,将现有算法移植到新环境往往需要付出巨大努力。一些项目采用有向无环图(DAG)来表示算法,不同项目对 DAG 的应用方式有所不同。例如,PLASMA 库仅用 DAG 表示具有特定属性的算法,且将其硬编码到子程序中;DPLASMA 库虽尝试分离算法及其实现,但仍在开发中;SMP 超标量编程环境在执行过程中动态生成 DAG 用于运行时调度,但缺乏运行前的静态程序分析能力;Uintah 框架则利用 DAG 表示算法以实现运行时系统的动态属性。
还有一些有前景的框架能自动提供并行程序的一系列动态属性,但它们的共同缺点是算法隐藏在程序代码中,不利于静态程序分析。
为满足上述需求,我们开发了 LuNA 并行数值子程序库,其基于算法和程序碎片化的思想,该思想又源于并行程序合成方法,并体现在 LuNA 碎片化编程系统中。许多出版物都对算法和程序碎片化进行了研究,还对包括粒子 - 单元法(PIC)等复杂数值方法在内的一系列数值算法进行了碎片化处理。
2. 碎片化编程简介
碎片化程序(FP)的开发包括以下几个阶段:
1. 算法指定 :以方阵乘法为例,使用以下顺序算法:
- (C = AB)
- (A = (a_{i,j}) {i,j = 1,N})
- (B = (b {i,j}) {i,j = 1,N})
- (C = (c {i,j}) {i,j = 1,N})
- (c {i,j} = \sum_{k = 1}^{N}
超级会员免费看
订阅专栏 解锁全文
11

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



