论文部分内容阅读
近年来,计算机技术的高速发展极大地推动了计算科学的进步,计算机的应用范围越来越广泛,处理问题的规模也越来越大。为了解决这些大量的实际问题,单单靠计算机硬件性能的提高是远远不能够满足的,而且硬件性能的提高也是有一定限制的。所以,一种有效并且流行的解决办法就是采用并行计算来提高计算机的计算能力,因此,多核处理器应运而生。多核处理器的问世给计算科学带来了强大的动力,但是同时也给计算机软件技术带来了更大的挑战。并行计算传统的编程模型分为两大类,一类是共享存储模型,主要采用的是多线程;另一类是消息传递模型,一般指分布式存储模型。然而,这两类方式都存在着一些缺陷,都不能很好的提高并行程序的计算性能。本文就是要通过对这两类并行编程模型的分析与比较,据此来寻求一个综合两类编程模型的混合新模型,使之能与并行计算系统更好的匹配和映射,能更加合理的组织并行任务以最大程度地提高并行计算性能。本文首先介绍了并行计算以及并行思维,介绍了并行计算机的体系结构和并行计算的性能评测标准,并且在此基础上对各种并行计算的编程环境进行了分析和比较。然后介绍了一种目前比较流行的基于消息传递的并行编程模型MPI,并详细写出了MPI的典型实现MPICH2在Windows下的安装配置过程。通过对MPI对象语义和MPICH2内部背景的分析,本人描述了为了实现多线程的MPI所进行的某方面的优化,提出了怎样在多线程多核的环境下减小MPI资源竞争的问题,经改进的解决方案在我的实验平台上使消息传递的速率提高31%。但是,仅仅依靠对MPI的优化还是不能较好的提高并行计算的性能,继而本人产生了将此消息传递编程模型与共享存储编程模型相结合的思路,所以本文又详细的介绍了共享存储编程模型中的线程构建模块TBB,并提出了将此线程构建模块TBB与MPI相结合的混合编程模型的可行性和优劣性。本文提出了在解决实际问题的时候,首先要将这个问题进行MPI分解,分解成彼此通信不太密集的若干个子问题,然后把每个子问题分配到各个节点上,节点间通过消息传递的方式进行粗粒度的并行;接着再把每个子问题分解成若干个子任务,在节点内部通过TBB进行细粒度的并行。最后总结了本文所做的工作和在工作中得到的经验和所发现的问题,并提出了有待于进一步研究的畅想。