基于Cell宽带引擎的LU分解优化与性能评估
1. 依赖分析与并行性利用
在块LU分解的典型实现中,矩阵会被划分为多个小的块。分解过程的第一次迭代,整个矩阵会被视为4个区域。第一次迭代使用特定方程计算对应区域A00、A01和A10的最终LU分解结果,同时计算对应区域A11的中间结果。后续迭代仅在更新后的区域A11上进行相同计算,随着迭代次数增加,工作集逐渐变小,直至得到最后一个块的最终结果。
为了帮助运行时依赖检查,使用了状态矩阵。数据矩阵中的每个块在状态矩阵中都有一个对应元素,指示该块计算完成的迭代次数。运行时,PPE会使用状态矩阵确定准备运行的任务。例如,在第二次迭代中,如果PPE发现块(1, 3)和(2, 1)的状态均为1,则可知块(2, 3)的计算已准备好运行。这种方案能暴露所有任务级并行性。
除了任务级并行性,还利用了Cell B/E支持的其他级别的并行性:
- 数据级并行性 :主要通过向量化实现,手动对程序进行向量化以最大化数据级并行性。
- 指令级并行性 :通过展开循环和插入分支提示来增加。
- 通信并行性 :使用邮箱作为SPE和PPE之间的主要通信方案,通信是非阻塞的。当任务分配给SPE时,会给它一个唯一的DMA标签,将任务所需的所有DMA Get请求排入MFC。MFC执行DMA操作时,SPE可自由处理其他请求,定期轮询每个标签下待处理的DMA操作状态,当MFC指示某个DMA标签没有更
超级会员免费看
订阅专栏 解锁全文
3481

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



