论文部分内容阅读
随着计算机进入多核时代,传统的依靠串行编程思维编写的桌面程序已不能满足多核的需要。传统的串行程序在多核平台上运行,不仅不能充分利用多核平台的优势,而且程序执行效率低下。因此,有必要对传统的串行程序进行改造,使其适应多核平台。图像领域具有计算量大、存储容量大的特点,一直是并行计算研究的热门领域。本文研究的是如何在短时间内将一张超大图合成为JPEG图片。合成过程中涉及到图像绘制,需要大量像素参与计算,具有耗时长特点,因而适合进行并行计算。本文对串行程序并行化改造的步骤是:分析串行程序并行化改造的必要性、找出串行程序的可并行区域、选择一种并行编程模型对并行区域进行并行改造、进行并行性能优化。本文以超大图合成算法为载体来研究如何改造一个串行程序,主要内容如下: (1)对目前常用的并行编程模型进行分析,每种编程模型给出一个具体实例来进行说明,然后通过各种编程模型的对比选择一种适合本次串行程序改造的并行编程模型。 (2)介绍传统的超大图合成算法,针对超大图合成算法运算量大、耗时长问题进行分析,并借助微软的性能分析工具进行热点分析,从而得出程序中可并行化部分,最后给出一个串行程序并行化方案。 (3)设计了本次并行化的优化策略包括数据的保护与同步、内存的优化、线程的个数设置、平衡负载。然后针对可并行区域采用TPL技术进行并行编程,并对算法的并行调试工具进行介绍,接着给出对本次算法性能评估的标准,最后给出一个完整超大图并行合成算法步骤。 (4)并行算法和串行算法分别在双核和四核平台上进行测试。对测试的结果从CPU性能、执行时间、加速比三个方面进行分析,从而得出了结论:改造后的并行算法无论是在CPU负载均衡方面还是执行时间方面都取得了重大提升,同时本次改造串行程序的方法对于改造其他串行桌面程序具有借鉴意义,达到了预期的研究目标。