论文部分内容阅读
数据密集型应用大部分都具有很强的数据依赖,普遍存在于诸如生物信息学、经济管理、生产调度、工程技术等科学计算领域。那些可分解为重复子问题并具有最优子结构的问题,可以使用动态规划算法高效地解决。然而由于计算数据规模的急剧上升,传统的串行程序应用,即使是高效的动态规划算法,在计算时间上也变得无法令人接受。采取并行程序设计来解决动态规划等强数据依赖型应用成为了当前的一个有效的方法。另一方面,由于并行程序设计过程复杂且容易出错,加上强数据依赖型应用本身的强依赖性,使得其并行化变得十分困难。面向DAG的数据驱动型应用模型是为简化动态规划的并行化而提出的,该模型从串行程序开发人员角度出发,使得用户可以像开发串行程序化一样开发并行程序,而繁琐的并行化实现和调度过程则由运行时系统负责,从而使开发人员将其精力和时间集中在具体的应用和算法上。然而此并行编程模型还存在很多不足。本文首先对上述模型进行了研究。在此基础上发现其中存在的问题,进行了有针对性的改进,设计了面向强数据依赖型应用的并行编程模型。此模型解决了主程序访问共享数据的问题和DAG模式图的扩展问题,改进了系统的结构,增加了它的可扩展性、可移植性和可配置性,使其能够面向动态规划以外的强数据依赖型应用。然后,基于面向强数据依赖型应用的并行编程模型,在共享存储环境中实现了EasyPDPv3系统。该系统完整实现了模型中提到的功能及其扩展接口,为开发人员提供了实用的并行程序开发工具。最后,本文对EasyPDPv3系统进行了详细的性能分析,测试了系统配置参数(分块大小、数据量、线程数等)对系统性能的影响,另外,针对系统的扩展功能进行了性能测试,并验证了超时容错扩展功能的正确性。