第5章编写基于MPI的应用。第4章介绍了容易并行化的问题。问题之所以简单,是因为工作单元容易划分、处理单元在计算过程中之间不需要任何同步通信。本章介绍一个传统HPC的问题,对于工作单元的划分、运行时数据分布和搜集、处理单元之间通信都比第4章的解决方案要复杂。本章呈现一个经典的HPC开发场景——在图像处理应用中的数据并行性。本章将为您解读如何使用C++语言来设计和编写一个并行应用。
本章要点:
-
了解如何用MPI开发数据并行的应用
-
掌握应用域分解方法
-
理解并行程序进程间的同步编程策略
5.1问题领域
图像处理是一个计算精细的领域。随着图像文件越来越大、特殊效果分门别类,花数小时处理一个图像已为寻常。在此领域具有代表性的例子就是对比度扩展(contrast stretching)——增强对比度的效果是通过基于邻近像素来增白或加深图像的像素。图像中拍摄了帆船和南太平洋的日落时的景色。我们看不清港口的其他帆船和帆杆的颜色。什么是对比度扩展处理方法呢?就是对每一个像素P,确定其8个邻像素的最大最小值,然后根据其邻像素相对P的明暗率向上或向下调整P的明暗度。最好的结果是缓慢细致地、重复调整图像直到图像收敛(即图像在循环之间不再变化)或经过固定次数的循环,以达到所求的效果。注意,在扩展后的图片中我们更清楚地看见在港口的其他帆船,尤其是白色的帆杆。对比度扩展是许多加强图像的技术之一。
更多关于MPI并行处理的技术细节和实例,可以参考以下资源:
暂无评论