中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十二章 并行程库设计基础

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 十二、并行程序设计基础
十二、并行程序设计基础

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 并行程序设计基础 121并行程序设计概述 122进程 123线程 124同步 125通信 12.6并行程序设计模型 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 2 2021/2/19 并行程序设计基础 ▪ 12.1 并行程序设计概述 ▪ 12.2 进程 ▪ 12.3 线程 ▪ 12.4 同步 ▪ 12.5 通信 ▪ 12.6 并行程序设计模型

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 并行程序设计欐述 并行程序设计难的原因 2并行语言的构造方法 3并行性问题 4交互/通信问题 5五种并行编程风范 6计算圆周率的样本程序 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 3 2021/2/19 并行程序设计概述 1 并行程序设计难的原因 2 并行语言的构造方法 3 并行性问题 4 交互/通信问题 5 五种并行编程风范 6 计算圆周率的样本程序

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 1并行程序设计难的原因 ◇技术先行,缺乏理论指导 ◇程序的语法/语义复杂,需要用户自已处理 >任务/数据的划分/分配 数据交换 同步和互斥 性能平衡 ◇并行语言缺乏代可扩展和异构可扩展,程序移植困难, 重写代码难度太大 ◇环境和工具缺乏较长的生长期,缺乏代可扩展和异构可 扩展 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 4 2021/2/19 1 并行程序设计难的原因 ❖ 技术先行,缺乏理论指导 ❖ 程序的语法/语义复杂, 需要用户自已处理 ➢ 任务/数据的划分/分配 ➢ 数据交换 ➢ 同步和互斥 ➢ 性能平衡 ❖ 并行语言缺乏代可扩展和异构可扩展, 程序移植困难, 重写代码难度太大 ❖ 环境和工具缺乏较长的生长期, 缺乏代可扩展和异构可 扩展

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 2并行语言的构造方法 串行代码段 (c)加编译注释构造并行程序的方法 for(i=0;i<N;++)A[=b[”b[i+1 pragma parallel for(=0;i<N;i++)c]=A]+A[+1] #pragma shared(A, b, c) #pragma local() (a)使用库例程构造并行程序 id=my_process id 0; pragma pfor iterate (i=0; N 1) p=number of _ processes for(=0;iN;}++)A]=b"b[+1]; for(i=id; i<N; i=i+p)A[]=b[]"b[i+1]; pragma synchronize barriero pragma pfor iterate(i=0; N; 1) for(=id;N=计p)A四+A+1:for(=0N+)c=A[+A+1 例子:MPl,PVM, Pthreads 例子: SGI power C (b)扩展串行语言 my_process _id, number- of_processes(, and barriero A(0:N-1)=b(0:N-1)*b(1:N) c=A(O:N-1)+A(1:N) 例子: Fortran90 回家同住能计异十心(口胎
国家高性能计算中心(合肥) 5 2021/2/19 2 并行语言的构造方法 串行代码段 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]; (a) 使用库例程构造并行程序 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, Pthreads (b) 扩展串行语言 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 (c) 加编译注释构造并行程序的方法 #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

中国料学火计算机科学与波术系 niversity of Science and Technology of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 2并行语言的构造方法 种并行语言构造方法比较 方法 实例 优点 缺点 库例程MP,PVM 易于实现,不需要新编|无编译器检查, 译器 分析和优化 扩展 Fortran90 允许编译器检查、分析实现困难需要新 和优化 编译器 编译器注释 SGI powerC,HPF介于库例程和扩展方法之间,在串行平台 上不起作用 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 6 2021/2/19 方法 实例 优点 缺点 库例程 MPI, PVM 易于实现, 不需要新编 译器 无 编 译 器 检 查 , 分析和优化 扩展 Fortran90 允许编译器检查、分析 和优化 实现困难,需要新 编译器 编译器注释 SGI powerC, HPF 介于库例程和扩展方法之间, 在串行平台 上不起作用. 三种并行语言构造方法比较 2 并行语言的构造方法

中国料学火计算机科学与波术系 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 3并行性问题 3.1进程的同构性 ☆SIMD:所有进程在同一时间执行相同的指令 ☆MMD各个进程在同一时间可以执行不同的指令 SPMD:各个进程是同构的,多个进程对不同的数据执 行相同的代码(一般是数据并行的同义语) 常对应并行循环,数据并行结构,单代码 MPMD各个进程是异构的,多个进程执行不同的代码 般是任务并行,或功能并行,或控制并行的同义语 常对应并行块,多代码 要为有1000个处理器的计算机编写一个完全异构的并行 程序是很困难的 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 7 2021/2/19 3 并行性问题 3.1 进程的同构性 ❖SIMD: 所有进程在同一时间执行相同的指令 ❖MIMD:各个进程在同一时间可以执行不同的指令 ➢SPMD: 各个进程是同构的,多个进程对不同的数据执 行相同的代码(一般是数据并行的同义语) 常对应并行循环,数据并行结构,单代码 ➢MPMD:各个进程是异构的, 多个进程执行不同的代码 (一般是任务并行,或功能并行,或控制并行的同义语) 常对应并行块,多代码 要为有1000个处理器的计算机编写一个完全异构的并行 程序是很困难的

中国料学火计算机科学与波术系 进程的同构性 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 3并行性问题 并行块 parbegin SI S2 S3...Sn parend SIS2 S3 Sn可以是不同的代码 并行循环:当并行块中所有进程共享相同代码时 parbegin S1 S2 S3 Sn parend S1S2S3.n是相同代码 简化为 parfor(i-1; K<=n, i++s(i 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 8 2021/2/19 并行块 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) 进程的同构性 3 并行性问题

中国料学火计算机科学与波术系 进程的同构性 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 3并行性问题 SPMD程序的构造方法 用单代码方法说明SPMD 用数据并行程序的构造方法 要说明以下SPMD程序 要说明以下SPMD程序 arfor (i-0; K<=N, i++)i parfor (F0; K<=N, 1++) foo(O) C[]=A[]+B[i]; 用户需写一个以下程序 pid=my process ido 用户可用一条数据赋值语句 numproc=number of processes; C=A+B parfor (ipid; K<=N, F=i+numproc)foo(i) 或 forall (i-l, N)C[]=A[+Bl] 此程序经编译后生成可执行程序A,用 shell 脚本将它加载到N个处理结点上 run a-numnodes n 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 9 2021/2/19 用单代码方法说明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程序的构造方法 用数据并行程序的构造方法 要说明以下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] 进程的同构性 3 并行性问题

中国料学火计算机科学与波术系 进程的同构性 niversity of Science and Technolo ogy of China DEAT三 NT OF C口 MPUTER SCIENGE AND TECHNOLOr 3并行性问题 MPMD程序的构造方法 用多代码方法说明MPMD用SPMD伪造MPMD 对不提供并行块或并行循环的语言要说明以下MPMD程序 要说明以下MPMD程序 parbegin SI S2 S3 parend parbegin SI S2 $3 parend 可以用以下SPMD程序 用户需写3个程序分别编译生成3 parfor(=03,计+) 个可执行程序S1S2S3,用shel|脚 if(F0)SI 本将它们加载到3个处理结点上 if (i1)S2 run si on node 1 if(i-2)S3 run s2 on node 1 run s3 on node 1 因此,对于可扩展并行机来说, S1,82和S3是顺序语言程只要支持SP就足够了 序加上进行交互的库调用 国家高性能计算中心(合肥 2021/2/19
国家高性能计算中心(合肥) 10 2021/2/19 用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就足够了 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是顺序语言程 序加上进行交互的库调用. 进程的同构性 3 并行性问题
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第十一章 快速傅里叶变换.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第十章 线性方程组的求解.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第一篇 并行计算的基础 第一章 并行计算机系统及结构模型、第二章 当代并行机系统、第三章 并行计算性能评测.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)课程简介(英文).ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)课程简介(主讲:傅秀芬).ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第九章 系统安全性.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第八章 网络操作系统.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第七章 作业管理与OS接口.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第六章 文件管理概论.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第五章 设备管理概述.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第四章 存储器管理 4.9 请求分段存储管理方式 4.10 段页式存储管理方式.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第四章 存储器管理 4.4 分页存储管理 4.5 分段存储管理 4.6 交换与覆盖 4.7 虚拟存储器 4.8 请求分页存储管理方式.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第四章 存储器管理 4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配方式.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第三章 处理机调度与死锁概念.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第二章 进程管理 2.4 进程同步 2.5 管程机制 2.6 进程通信.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第二章 进程管理 2.1 进程的概念和PCB 2.2 进程控制 2.3 线程.ppt
- 广东工业大学:《计算机操作系统》课程电子教案(PPT教学课件)第十章 UNIX系统内核结构.ppt
- 广东工业大学:计算机操作系统 ——第一章 操作系统引论.ppt
- Linux实用教程——第九章 Linux程序设计基础.ppt
- Linux实用教程——第八章 Linux网络安全基础知识.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十三章 共享存储系统编程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十四章 分布存储系统并行编程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十五章 并行程序设计环境与工具.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第四章 并行算法的设计基础.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第五章 并行算法的一般设计方法.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第六章 并行算法的基本设计技术.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第七章 并行算法的一般设计过程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第八章 并行数值算法.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第九章 稠密矩阵运算.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第9章 位运算.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第10章 文件操作.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第一章 C语言程序设计概述.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第1章(1-2) C语言的程序结构.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第2章 数据类型、运算符和表达式.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第3章 C语言的基本语句 和程序结构设计.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第4章 数组.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第5章 函数.ppt
- 中国科技大学:电子科学与技术系《C语言程序设计》 第6章 预处理.ppt
- 中国科技大学:电子科学与技术系《C语言程序设计》 第7章 指针.ppt
- 中国科技大学:电子科学与技术系《C语言程序设计》 第8章 结构体.ppt