、并行编程基础知识 二、MP|编程实例演示 三、MP|程序分析及编程入门 提纲 四、 Python并发编程方式 五、行计算优化 六、CPU/GPU/TPU概述
六、CPU/GPU/TPU概述 一、并行编程基础知识 五、行计算优化 四、Python并发编程方式 三、MPI程序分析及编程入门 二、MPI编程实例演示 提 纲
、并行编程基础知识 并行计算机组成部分 节点(node): 每个节点由多个处理器构成,可以直接输入输出 互联网络( interconnect network) 所有节点通过互联网络相互连接通信。 内存( memor y): 内存由多个存储模块组成,这些模块或者与节点对称 地分布在互联网络的两侧,或者位于各个节点的内部
一、并行编程基础知识 ➢ 节点(node): – 每个节点由多个处理器构成,可以直接输入输出 ➢ 互联网络(interconnect network): – 所有节点通过互联网络相互连接通信。 ➢ 内存 (memory): – 内存由多个存储模块组成,这些模块或者与节点对称 地分布在互联网络的两侧,或者位于各个节点的内部 并行计算机组成部分
、并行编程基础知识 并行计算机体系结构 节点0 节点n 节点0 节点n cPu1 CPU CPUO CPU1 CPU CPUO CPU1 cache cache cache「 cache cache cache hub hub hubhmem hubhmem router router router router 互联网络 互联网络 mem memmel ··|mem 内存模块位于节点内部 内存模块与节点分离
内存模块位于节点内部 并行计算机体系结构 内存模块与节点分离 一、并行编程基础知识
、并行编程基础知识 图例 Erthnet IB链路56Gbps= 接入交换机 运维管理1 Internet 监控屏 科研用户2 校园网 R201管理办公室 用户3 管理节点 P管理网络 胖节点 胖节点 un] QImiHlmLi B存储网络 计算节点106个(华为cH21V3) 并行存储( Huawei Ocean Stor9000 CPU: Intel Xeon E52600V312 cores cpu主频:25GHz内存:64GB) 节点:N+M8+2),裸容量:1402TB 西北农林科技大学高性能计算校级平台系统架构图
一、并行编程基础知识
、并行编程基础知识 两个重要概念:进程与线程 ◆程序:实现特定目标或解决特定问题而用计算机语言编写的命令序列 的集合,或者称之为:算法+数据结构。 ◆进程:可并发执行的程序在一个数据集合上的运行过程。 进程是程序的一次执行; 进程可以是和别的计算并发执行的计算; 进程可以定义为一个数据结构及其能在其上进行操作的一个程序 进程是一个程序及其数据在处理机上顺序执行时所发生的活动; 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调 度的独立单位。 ◆线程:线程是进程中的一个实体,是被系统独立调度和分派的基本单 位。线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的 资源(如程序计数器、一组寄存器和堆栈),但他与同属于一个进程 中的其他线程共享进程所拥有的全部资源
一、并行编程基础知识 ◆ 程序:实现特定目标或解决特定问题而用计算机语言编写的命令序列 的集合,或者称之为:算法+数据结构。 ◆ 进程:可并发执行的程序在一个数据集合上的运行过程。 ➢ 进程是程序的一次执行; ➢ 进程可以是和别的计算并发执行的计算; ➢ 进程可以定义为一个数据结构及其能在其上进行操作的一个程序; ➢ 进程是一个程序及其数据在处理机上顺序执行时所发生的活动; ➢ 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调 度的独立单位。 ◆ 线程:线程是进程中的一个实体,是被系统独立调度和分派的基本单 位。线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的 资源(如程序计数器、一组寄存器和堆栈),但他与同属于一个进程 中的其他线程共享进程所拥有的全部资源。 两个重要概念:进程与线程
、并行编程基础知识 并行编程概述 ◆并行编程通常是指软件代码,它促进在同一时间执行多个计算任务的 性能。 ◆ 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编程实例演示 从简单入手!