3.1 并行程序设计基础与样例_软件学院_徐悦甡_第一部分

Similar documents
PowerPoint Presentation

第7章-并行计算.ppt

并行程序设计基础

《嵌入式系统设计》教学大纲

Natural Language Processing, Topic Modeling, Neural Text Generation and Ali Xiaomi

提纲 1 2 OS Examples for 3

4.2 ================================================================================= WFMC Task Task 4 5

Microsoft Word - VRP物理引擎应用.doc

Microsoft PowerPoint - yxu_并行开发概述1

2.1与2.2 并行计算机系统结构模型与并行计算机性能测评_软件学院_徐悦甡_第二部分

<4D F736F F D20CDACCDFB4F CEC4B5B5BFD8BCFE20D6D0B5C4CEC4B5B5>

消息传递并行编程环境MPI.doc


PowerPoint Presentation

水晶分析师

并行计算

并行计算

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

電機工程系認可證照清單 /7/1

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

MPI编译环境的使用

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

Presentation Title

PowerPoint 演示文稿


第 二 章 古 代 慢 慢 睁 开 眼 睛, 我 的 面 前 出 现 一 个 女 孩 子, 大 约 十 六 七 岁, 身 穿 淡 绿 色 布 裙, 头 上 两 个 小 圆 髻 特 别 娇 俏 可 爱 医 院 什 么 时 候 出 现 这 么 一 个 可 爱 的 古 装 护 士 啊! 这 医 院 真 有

<453A5CBDCCD1A72DBFCEB3CC5C C4EAB4BA20B2A2D0D0BCC6CBE35C536C E65775C D E >

PowerPoint 演示文稿

VASP应用运行优化

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Microsoft PowerPoint - RT0950_EliminatingRubyGILthroughHTM_Slides_ja.ppt


~50 50~25 ~ ~ 25~15 ~ ~ 15 ~ ~ ~

投影片 1

册子0906

GRAPES 软件使用指南

Microsoft PowerPoint - 01_Introduction.ppt


Microsoft PowerPoint - PC13.pptx

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

并行算法实践

07-1.indd

Microsoft PowerPoint - VCAD.ppt []

<453A5CBDCCD1A72DBFCEB3CC5C C4EAB4BA20B2A2D0D0BCC6CBE35C536C E65775C D E >

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

科学出版中国科学杂志社

PowerPoint Presentation

附件2

CH01.indd

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

06-4.indd

要 闻 解 读 宏 观 政 策 李 克 强 : 积 极 发 展 股 权 融 资 有 效 缓 解 融 资 难 融 资 贵 问 题 7 月 18 日, 中 共 中 央 政 治 局 常 委 国 务 院 总 理 李 克 强 主 持 召 开 各 省 ( 区 市 ) 政 府 负 责 人 促 进 社 会 投 资

第六章


的 機 器 指 令, 由 Java 虛 機 器 代 表 第 三 種 是 Unix 虛 擬 機 器 模 型 我 們 將 一 一 介 紹 這 些 不 同 派 別 的 VM 模 型 IBM 虛 擬 機 器 模 型 現 今 所 使 用 的 主 要 VM 模 型 之 一 就 是 IBM(Internation

分层并行计算模型 Loyered Models of Parallel Computation

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

并行计算



<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

Microsoft Word - 08_科普作品選讀示例一_ doc

公共选修课选课注意事项

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1

Microsoft PowerPoint - os_4.ppt

untitled


Training

Natural Language Processing, Topic Modeling, Neural Text Generation and Ali Xiaomi

多層次傳銷與獎金系統

C. 執 行 內 容 : 依 課 程 安 排 規 定 訂 定 (2) 申 請 案 經 本 局 審 查 同 意 後 始 得 執 行 ( 內 容 變 更 時 亦 同 ), 並 於 課 程 開 始 前 告 知 學 員 本 課 程 係 由 臺 中 市 政 府 勞 工 局 輔 導 105 年 度 就 業 安

中文模板

2014 年度军队文职人员招聘信息

untitled

untitled

untitled

<4D F736F F D C1ECD3F2B3A3D3C3B1E0D2EBC6F7B1E0D2EBD3C5BBAFCAD6B2E12E646F63>

2586 电 子 学 报 2010 年 2 异 构 计 算 模 型 所 谓 异 构 计 算 是 指 将 性 能 各 异 的 计 算 机 ( 如 :PC 工 作 站 群 向 量 机 SIMD MIMD 计 算 机 FPGA GPU DSP CELL 专 用 机 等 ), 通 过 高 速 网 络 连 成


30 广 州 标 旗 电 子 科 技 有 限 公 司 190, ,000 10, 广 州 金 锘 言 机 械 设 备 有 限 公 司 1,233, ,233, , 广 州 市 康 润 生 物 制 品 开 发 有 限 公 司 875,0

PowerPoint 演示文稿

公 司 年 度 大 事 记 2015 年 10 月 -11 月, 公 司 完 成 股 份 制 改 造 10 月 13 日, 百 灵 有 限 临 时 股 东 会 作 出 决 议, 同 意 各 发 起 人 将 其 在 百 灵 有 限 拥 有 的 截 至 2015 年 8 月 31 日 经 审 计 的 原

4-HPC-trend-Intel-ICAF-zhangyunquan [Compatibility Mode]

Microsoft Word - 5 王伟.doc

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

目次 

Slide 1

MergerPdf.dll

模板

IntelBook_cn.doc

Microsoft PowerPoint - plan06.ppt

科学计算的语言-FORTRAN95

考试时间课程名称级人数考试地点 机械工程 17 级卓越 1 30 D-386 机械工程 17 级卓越 2 30 D-386 自动化 17 级 1 30 D-3108 自动化 17 级 2 30 D-3108 电子信息工程 17 级 1 32 C-170 电子信息工程 17 级 2 32 C-242

201230

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I

Transcription:

并行计算 :Parallel Computing 结构编程算法应用 3.1 并行程序设计基础与样例 ( 第一部分 ) 徐悦甡 (Yueshen Xu) ysxu@xidian.edu.cn 软件工程系西安电子科技大学

上节回顾 并行计算机性能测评 Amdahl 定律 S = W s + W p W s + W p Τp = f + (1 fሻ f + 1 f p = p 1 + f(p 1 ሻ = 1 (p 1ሻ 1 + f p

上节回顾 并行计算机性能测评 等效率度量标准 T e : 有效计算时间 ( 即串行算法时间 ) T p : 并行计算时间 T e + T o = p T p p: 处理器个数 E: 效率 S = T e T p E = S p = T e T e + T o p = 1 1 + T o T e = = p 1 + T o T e = 1 1 + T o W p 1 + T o W p 1 T e = i=0 p 1 T o = i=0 t e i t o i 如果问题规模 W 保持不变 处理器数 p 增加, 开销 T o 增大 效率 E 下降

本节提纲 并行程序设计语言构造与分类 并行程序样例与引入 并行语言的构造方法 并行语言的分类 并行程序设计通信与编程规范 并行程序设计的一般性问题 并行性问题 进程间的交互问题 并行程序设计的编程规范 计算圆周率程序样本 从编程语言的角度 从编程范式的角度 4

并行程序样例与引入 找出最大值 思考 : 一般的串行程序应该怎么写 程序 语言 + 数据结构 + 算法 载体工具逻辑载体 并行程序设计部分所涉及的内容 5

并行程序设计样例 求最大数 ( 一 ) CPU 0 CPU 1 CPU 2 CPU 3 6

并行程序设计样例 求最大数 ( 二 ) CPU 0 CPU 1 CPU 2 CPU 3 7

并行程序设计样例 求最大数 ( 三 ) CPU 0 CPU 1 CPU 2 CPU 3 8

并行程序设计样例 求最大数 ( 四 ) CPU 0 CPU 1 CPU 2 CPU 3 9

并行程序设计样例 求最大数 ( 五 ) CPU 0 CPU 1 CPU 2 CPU 3 10

并行程序设计样例 求最大数 ( 八 ) CPU 0 CPU 1 CPU 2 CPU 3 11

并行程序设计样例 求最大数 ( 七 ) CPU 0 CPU 1 CPU 2 CPU 3 12

并行程序设计样例 求最大数 ( 九 ) CPU 0 CPU 1 CPU 2 CPU 3 13

并行程序设计样例 求最大数 ( 十 ) CPU 0 CPU 1 CPU 2 CPU 3 14

串 / 并行程序设计过程 串行程序设计过程 应用 问题 设计算法 软件设计 选择语言 工具实现 调试 优化 硬件 大部分情况下透明 15

串 / 并行程序设计过程 并行程序设计过程 ( 传统 ) 应用 数据并行 问题 任务并行 网络并行 并行应用分类 软件设计 共享存储, 消息传递 设计并行算法 选择语言 工具实现调试 优化 并行编程范式 硬件 SMP PVP MPP Cluster DSM 并行计算机体系结构 天河曙光 Nvidia 的 GPU Intel 的多核 CPU 物理机 16

并行语言的构造方法 并行语言的构造方法 串行代码段 for ( i= 0; i<n; i++ ) a[i]=b[i]*b[i+1]; for (i= 0; i<n; i++) 名词解释 c[i]=a[i]+a[i+1]; 关键字 1 MPI: Message passing interface, 消息传递接口 2 PVM: Parallel Virtual Machine, 并行虚拟机 方法一 : 使用库函数构造并行程序 id=my_process_id(); p=number_of_processes(); for ( i= id; i<n; i=i+p) a[i]=b[i]*b[i+1]; barrier(); for (i= id; i<n; i=i+p) c[i]=a[i]+a[i+1]; // 确保进程同步 例子 : MPI,PVM 并行程序设计框架 : 提供语法支持与 API 支持 17

并行语言的构造方法 并行语言的构造方法 方法二 : 扩展串行语言 my_process_id(), number_of_processes(), and barrier() a(0:n-1)=b(0:n-1)*b(1:n) c=a(0:n-1)+a(1:n) 例子 : Fortran 90 名词解释 : 1 Fortran 90: Fortran 在 90 年代的标准 18

并行语言的构造方法 并行语言的构造方法 方法三 : 加编译注释 / 宏构造并行程序 #pragma parallel #pragma shared(a,b,c) #pragma local(i) { # pragma pfor iterate(i=0;n;1) for (i=0;i<n;i++) a[i]=b[i]*b[i+1]; # pragma synchronize # pragma pfor iterate (i=0; N; 1) } for (i=0;i<n;i++) c[i]=a[i]+a[i+1]; 关键字 例子 : SGI power C 名词解释 1 SGI power C: SGI 公司的并行 C 语言版本 并行程序设计框架 : 提供语法支持与 API 支持 19

并行语言的构造方法 三种并行语言构造方法比较 方法实例优点缺点 库例程 MPI, PVM 易于实现, 不需要新编译器 无编译器检查, 分析和优化 扩展串行语言 Fortran90 允许编译器检查 分析和优化 实现困难, 需要新编译器 编译器注释 SGI powerc 介于库例程和扩展方法之间, 在串行平台上不起作用 名词解释 1 MPI: Message passing interface, 消息传递接口 2 PVM: Parallel Virtual Machine, 并行虚拟机 20

并行语言的分类 两种分类方法 共享存储的模型和语言 Pthread [ 注 ],OpenMP 适用于 PVP, SMP, DSM 从体系结构与存储结构角度分类 消息传递的模型和语言 MPI,PVM 适用于 MPP, Cluster, COW 数据并行的模型和语言 Fortran 90,HPF 适用于 MPP,Cluster 特定应用 注 :Pthread: POSIX threads; HPF: High Performance Fortran 21

并行语言的分类 两种分类方法 ( 第二种 ) 从对于并行性 通信 同步表达的程度分类 可显示地提供对于并行性 通信与同步等的语法支持或接口支持 只部分提供对于并行性 通信与同步等的语法支持或接口支持 我们所讲述的语言与技术均提供语法或接口的全部支持 Python, Java MPI(Message Passing Interface) 22

并行语言的分类 并行语言的评价 并行程序设计的复杂性要求并行语言框架尽可能屏蔽底层实现, 实现 透明, 包括 程序到并行进程或线程的分解 线程到处理器的映射 进程或线程间的通信 进程或线程间的同步 语言体系结构相对独立 能提供一套完整的软件开发方法 有充分的性能保障 为什么会涉及到进程与线程? 进程与线程是并行程序的基本组成单位 23

进程与线程回顾 向并行程序设计过渡 回顾 : 进程 操作系统 程序在计算机上的一次执行活动 系统进行资源分配和调度运行的一个独立单位 使多个程序并发执行, 改善资源利用率提高系统的吞吐量 并行程序设计也会涉及到多线程 24

进程与线程回顾 向并行程序设计过渡 线程 进程的一个实体, 是轻量级的进程 拥有很少的系统资源 : 程序计数器 寄存器和栈 同一进程的各线程共享进程的全部资源 25

并行程序设计的一般性问题 并行语言 并行程序设计 并行程序设计中需要解决的一般性问题 并行性问题 - 针对一个程序 / 进程, 如何实现并行化 - 并行性与数据流的关系, 静态并行性与动态并行性 进程编组 划分与分配等 交互性问题 - 不同的程序 / 进程, 在并行执行过程中, 如何交互 - 多种交互方式 26

并行程序设计的一般性问题 并行性问题 并行性问题 : 并行性与数据流 SIMD(Single Instruction Multiple Data) 所有进程在同一时间执行相同的指令 MIMD(Multiple Instructions Multiple Data) 各个进程在同一时间可以执行不同的指令 上一章是从数据流的角度, 这一章从进程的角度进行解读 27

并行程序设计的一般性问题 并行性问题 MIMD (Multiple Instructions Multiple Data), 两种 SPMD (Single Program Multiple Data) 单程序多数据流 各个进程是同构的, 多个进程对不同的数据执行相同的代码 ( 也叫做数据并行 ) 常对应并行循环, 数据并行结构, 单代码 MPMD(Multiple Programs Multiple Data) 多程序多数据流 各个进程是异构的, 多个进程执行不同的代码 ( 也叫做任务并行, 或功能并行, 或控制并行 ) 常对应并行块, 多代码 28

并行程序设计的一般性问题 并行性问题 // 并行块 parbegin S1 S2 S3.Sn parend // S1 S2 S3.Sn 可以是不同的代码 // 并行循环 : 当并行块中所有进程共享相同代码时 parbegin S1 S2 S3.Sn parend //S1 S2 S3.Sn 是相同代码 简化为 parfor (i=1; i<=n, i++) S(i) 29

并行程序设计的一般性问题 并行性问题 SPMD 程序的构造方法 ( 两种 ) 用单代码方法说明 SPMD // 要说明以下 SPMD 程序 parfor (i=0; i<=n, i++) foo(i) // 用户需写一个以下程序 pid=my_process_id(); numproc=number_of _processes(); parfor (i=pid; i<=n, i=i+numproc) foo(i) // 此程序经编译后生成可执行程序 A, 用 //shell 脚本将它加载到 N 个处理结点上 run A numnodes N 用数据并行程序的方法 // 要说明以下 SPMD 程序 parfor (i=0; i<=n, i++) { C[i]=A[i]+B[i]; } 用户可用一条数据赋值语句 C=A+B 或 forall (i=1,n) C[i]=A[i]+B[i] 关键字注释 30

并行程序设计的一般性问题 并行性问题 MPMD 程序的构造方法 ( 两种 ) 用多代码方法说明 MPMD /* 对不提供并行块或并行循环的语言, 要说明以下 MPMD 程序 */ parbegin S1 S2 S3 parend /* 用户需写 3 个程序, 分别编译生成 3 个可执行程序 S1 S2 S3, 用 shell 脚本将它们加载到 3 个处理结点上 */ run S1 on node1 run S2 on node1 run S3 on node1 /*S1, S2 和 S3 是顺序语言程序加上进行交互的库调用 */ 用 SPMD 伪造 MPMD // 要说明以下 MPMD 程序 parbegin S1 S2 S3 parend // 可以用以下 SPMD 程序 parfor (i=0; i<3, i++) { if (i=0) S1 if (i=1) S2 if (i=2) S3 } /* 因此, 对于可扩展并行机来说, 只要支持 SPMD 就足够了 */ 关键字注释 31

并行程序设计的一般性问题 并行性问题 开发动态并行性的一般方法 Fork/Join 静态并行性 程序的结构以及进程的个数在运行之前 ( 如编译时, 连接时或加载时 ) 就可确定 动态并行性 进程要在运行时创建和终止 静态并行性的例子 parbegin P, Q, R parend 其中 P,Q,R 是静态的 动态并行性的例子 while (C>0) begin fork (foo(c)); C:=boo(C); end 32

并行程序设计的一般性问题 并行性问题 开发动态并行性的一般方法 Fork/Join Process A Process B Process C begin end Z:=1 fork(b); T:=foo(3); begin fork(c); X:=foo(Z); join(c); output(x+y); end begin end Y:=foo(Z); Fork: 派生一个子进程 Join: 强制父进程等待子进程 33

3.1 并行程序设计基础与样例 ( 第二部分 ) http://web.xidian.edu.cn/ysxu/ 结构编程算法应用