并行计算课程报告1.学习总结1.1并行计算简介并行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。1.2并行计算机分类和并行机体系结构的特征按内存访问模型、微处理器和互联网络的不同,当前流行的并行机可分为对称多处理共享存储并行机(SMP:SymmetricMulti-Processing)、分布共享存储并行机(DSM:DistributedSharedMemory)、机群(cluster)、星群(constellation)和大规模并行机(MPP:MassivelyParallelProcessing)等五类。SMP并行机有如下主要特征:对称共享存储、单一的操作系统映像、局部高速缓存cache及其数据一致性、低通信延迟、共享总线带宽、支持消息传递、共享存储并行程序设计。SMP并行机具有如下缺点:欠可靠、可扩展性(scalability)较差。DSM并行机具有如下主要特征:并行机以结点为单位,每个结点包含一个或多个CPU,每个CPU拥有自己的局部cache,并共享局部存储器和I/O设备,所有结点通过高性能互联网络相互连接;物理上分布存储;单一的内存地址空间;非一致内存访问(NUMA)模式;单一的操作系统映像;基于cache的数据一致性;低通信延迟与高通信带宽;DSM并行机可扩展到数百个结点,能提供每秒数千亿次的浮点运算性能;支持消息传递、共享存储并行程序设计。机群(cluster)有三个明显的特征:①系统由商用结点构成,每个结点包含2-4个商用微处理器,结点内部共享存储。②采用商用机群交换机连接结点,结点间分布存储。③在各个结点上,采用机群Linux操作系统、GNU编译系统和作业管理系统。星群(constellation)有三个明显的特征:①系统由结点构成,每个结点是一台共享存储或者分布共享存储的并行机子系统,包含数十、数百、乃至上千个微处理器,计算功能强大。②采用商用机群交换机连接结点,结点间分布存储。③在各个结点上,运行专用的结点操作系统、编译系统和作业管理系统。大规模并行机系统主要特征为:①系统由结点构成,每个结点含10个左右处理器,共享存储。处理器采用专用或者商用CPU。②采用专用高性能网络互连,结点间分布存储。③系统运行专用操作系统、编译系统和作业管理系统。1.3开展并行计算所必须具备的三个条件①并行机。并行机至少包含两台或者以上的处理机,这些机器通过互联的网络进行通信。②应用问题必须具有并行度。也就是说,应用问题可以分解为多个子任务,这些子任务可以并行的执行。将一个应用分解的过程,成为并行算法的设计。③并行编程。在并行机提供的并行编程环境上,具体实现并行算法,编制并运行并行程序,从而达到解决问题的目的。1.4并行计算的主要研究内容①并行机的高性能特征抽取。主要任务在于充分理解和抽取当前并行机体系结构的高性能特征,提出实用的并行计算模型和并行性能评价方法,指导并行算法的设计和并行程序的实现。②并行算法设计与分析。针对应用领域专家求解各类应用问题的离散计算方法,设计高效率的并行算法,将应用问题分解为可并行计算的多个子任务并具体分析这些算法的可行性和效果。③并行实现技术。主要包含并行程序设计和并行性能优化。基于并行机提供的并行编程环境,例如消息传递平台MPI或者共享存储平台OpenMP具体实现并行算法,研制求解应用问题的并行程序。同时结合并行机的高性能特征和实际应用的特点,不断优化并行程序的性能。④并行应用。这是并行计算研究的最终目的。通过验证和确认并行程序的正确性和效率,进一步将程序发展为并行应用软件,应用于求解实际问题。同时结合实际应用出现的各种问题,不断地改进并行算法和并行程序。1.5并行计算模型计算模型实际上就是硬件和软件之间的一种桥梁,使用它能够设计分析算法,在其上高级语言能被有效地编译且能够用硬件来实现。并行计算模型主要包括:PRAM模型、异步PRAM模型、BSP模型、logP模型等等。1.6并行计算的数值算法并行计算的数值算法比较深奥。主要学习了线性方程组求解、矩阵的运算。线性方程组求解的并行算法主要学习了:有带回的高斯消去法、无带回的高斯-约旦法、迭代求解的高斯-塞德尔法、雅可比迭代法等等。矩阵运算的并行算法主要学习了:矩阵的带状划分、矩阵的棋盘划分、基于矩阵划分的矩阵乘法(简单并行分块乘法、Cannon乘法、Fox乘法、DNS乘法)等等。1.7消息传递接口编程模型(MPI)一个MPI并行程序由一组运行在相同或不同计算机/计算结点上的进程或线程构成。这些进程或线程可以运行在不同处理机上,也可以运行在相同的处理机上。为统一起见MPI程序中一个独立参与通信的个体称为一个进程(process)。一个MPI进程通常对应于一个普通进程或线程,但是在共享存储/消息传递混合模式程序中,一个MPI进程可能代表一组UNIX线程。MPI并行程序和串行程序没有很大的差别,它们通过对MPI函数的调用来实现特定的并行算法。一个MPI并行程序主要由三个部分组成:①进入并行环境。调用MPI_Init来启动并行计算环境。它包括在指定的计算结点上启动构成并行程序的所有进程以及构建初始的MPI通信环境和通信器MPI_COMM_WORLD、MPI_COMM_SELF。②主体并行任务。这是并行程序的实质部分。所有需要并行来完成的任务都在这里进行。在这个部分中,实现并行算法在并行计算机上的执行过程。③退出并行环境。调用MPI_Finalize退出并行环境。一般说来,退出并行计算环境后程序的运行亦马上结束。2.我的想法通过这个学期的学习,我对并行计算有了一定的认识,了解了其发展史以及现今的应用现状,了解了其硬件并行机制和软件编程机制,并对其前景有了一定的了解。并行计算可谓前景远大。学习了并行计算里边的MPI(消息传递接口),这是一种软件层面的并行编程规范。同时,我也了解到了Hadoop、Spark等并行计算框架,这些都可以部署在普通机组成的集群上,用来进行大数据处理。因此,下一步我想学习一下它们的区别与应用范围,并进一步深入学习其中之一。同时,这也是建立在对并行计算硬件架构有一定的了解的基础之上的,因此,我还会进一步深入的学习一下并行计算的方方面面。最后,感谢老师的辛勤教授,让我们对并行计算的主要内容和原理有了较深入的了解和掌握,增长了我们的知识,提高了我们的能力,让我们在未来的道路上有了更明确的目标。