、并行编程基础知识 并行编程概述 ◆并行编程通常是指软件代码,它促进在同一时间执行多个计算任务的 性能。 ◆ For example: 操场上有20个滑梯而不是一个。孩子们不必排队等待轮到自己,因为 他们可以同时玩。 使用电脑鼠标,一边听音乐,一边写毕业论文,同时对个人电脑做病 毒扫描,这唯一的理由就是并发编程。 在这种情况下,它的多重任务允许多个程序或进程访问CPU而没有等待。 这一设置允许使用多任务共享的资源进行密集的l/0处理和有效的信号 处理。 并发性也可以通过实施多个计算线程发生通常采用交错启动和完成 点)。这叫做多线程,并且它发生在一个单一的进程或程序中。这就是 为什么你可以打印一个文档,同时继续编辑另一个文档。如果没有多 线程,U会太慢,因为系统将无法在同一时间应对多个用户操作
一、并行编程基础知识 ◆ 并行编程通常是指软件代码,它促进在同一时间执行多个计算任务的 性能。 ◆ For example: ➢ 操场上有20个滑梯而不是一个。孩子们不必排队等待轮到自己,因为 他们可以同时玩。 ➢ 使用电脑鼠标,一边听音乐,一边写毕业论文,同时对个人电脑做病 毒扫描,这唯一的理由就是并发编程。 ➢ 在这种情况下,它的多重任务允许多个程序或进程访问CPU而没有等待。 这一设置允许使用多任务共享的资源进行密集的I/O处理和有效的信号 处理。 ➢ 并发性也可以通过实施多个计算线程发生(通常采用交错启动和完成 点)。这叫做多线程,并且它发生在一个单一的进程或程序中。这就是 为什么你可以打印一个文档,同时继续编辑另一个文档。如果没有多 线程,UI会太慢,因为系统将无法在同一时间应对多个用户操作。 并行编程概述
、并行编程基础知识 并行编程模式 ◆并行编程模式,主要指并行编程时,程序员将程序各模块并行执行时, 模块间的通信方式,目前并行编程模式主要包括以下三种: 共享内存:共享内存是进程间传递数据的一种高效方法。在共享内存 模型中,并行进程共享一个进行异步读取的全局地址空间。异步并发 访问可能导致条件竞争,因此需要同步机制来避免条件竞争,这些机 制包括锁,信号量,管程(n moni tor )。传统的多核处理器是直接支持 共享内存的,所以导致很多利用该特性的语言和库出现,以0 penMP为 代表; 》消息传递:在消息传递模型中,并行进程是通过消息传递来交换数据 的。这些通信可以是异步的,即消息可以在接收者做好准备前发送, 也可以是同步的,即只有接受者准备好接收消息时才能发送。消息传 递的csP( Communi cat ing sequential processes)模型使用同步通 channe来连接进程,以MP|,PW为代表; 数据并行模式:数据并行化关注在数据集上执行的操作。一组任务对 数据集进行运算,但是会对不同的分区进行运算,以 Fortran为代表
一、并行编程基础知识 ◆ 并行编程模式,主要指并行编程时,程序员将程序各模块并行执行时, 模块间的通信方式,目前并行编程模式主要包括以下三种: ➢ 共享内存:共享内存是进程间传递数据的一种高效方法。在共享内存 模型中,并行进程共享一个进行异步读取的全局地址空间。异步并发 访问可能导致条件竞争,因此需要同步机制来避免条件竞争,这些机 制包括锁,信号量,管程(monitor)。传统的多核处理器是直接支持 共享内存的,所以导致很多利用该特性的语言和库出现,以OpenMP为 代表; ➢ 消息传递:在消息传递模型中,并行进程是通过消息传递来交换数据 的。这些通信可以是异步的,即消息可以在接收者做好准备前发送, 也可以是同步的,即只有接受者准备好接收消息时才能发送。消息传 递的CSP(Communicating sequential processes)模型使用同步通信 channel来连接进程,以MPI,PVM为代表; ➢ 数据并行模式:数据并行化关注在数据集上执行的操作。一组任务对 数据集进行运算,但是会对不同的分区进行运算,以Fortran为代表。 并行编程模式
、并行编程基础知识 什么是MP|? Massage Passing Inter face:是消息传递函数库的标 准规范; 由M论坛开发.支持 Fortran、C和0十+; 种新的库描述,不是一种语言
一、并行编程基础知识 ➢ Massage Passing Interface:是消息传递函数库的标 准规范; ➢ 由MPI论坛开发.支持Fortran、C和C++; ➢ 一种新的库描述, 不是一种语言。 什么是MPI?
、并行编程基础知识 ◆消息传递并行程序设计 用户必须通过显式地发送和接收消息来实现处理机间的数据交换。 每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行, 必须通过显式的消息传递来实现。 这种编程方式是大规模并行处理机(MPP)和机群( Cluster)采用的 主要编程方式。 并行计算粒度大,特别适合于大规模可扩展并行算法 由于消息传递程序设计要求用户很好地分解问题,组织不同进程间的 数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法 >消息传递是当前并行计算领域的一个非常重要的并行程序设 计方式
◆消息传递并行程序设计 – 用户必须通过显式地发送和接收消息来实现处理机间的数据交换。 – 每个并行进程均有自己独立的地址空间,相互之间访问不能直接进行, 必须通过显式的消息传递来实现。 – 这种编程方式是大规模并行处理机(MPP)和机群(Cluster)采用的 主要编程方式。 ➢ 并行计算粒度大,特别适合于大规模可扩展并行算法 – 由于消息传递程序设计要求用户很好地分解问题,组织不同进程间的 数据交换,并行计算粒度大,特别适合于大规模可扩展并行算法. ➢ 消息传递是当前并行计算领域的一个非常重要的并行程序设 计方式 一、并行编程基础知识
二、MP|编程实例演示 从简单入手! 下面我们以C语言的形式给出一个最简单的MP|并 行程序He|o(下页) ·该程序在终端打印出 Helo wor|d!字样. ·“ Helo wor ld”:一声来自新生儿的问候
• 下面我们以C语言的形式给出一个最简单的MPI并 行程序Hello (下页). • 该程序在终端打印出Hello World!字样. • “Hello World”:一声来自新生儿的问候. 二、MPI编程实例演示 从简单入手!