欢迎来到天天文库
浏览记录
ID:56536675
大小:392.50 KB
页数:56页
时间:2020-06-27
《中科大多核并行计算 课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、多核并行计算MulticoreParallelComputing主讲人徐云10/3/20211H.AnCopyrightParallelProgramming十二、并行程序设计基础10/3/20212H.AnCopyrightParallelProgramming并行程序设计基础12.1并行程序设计概述12.2进程12.3线程12.4同步12.5通信12.6并行程序设计模型并行程序设计概述并行程序设计难的原因多核编程的挑战和机遇及区别并行语言的构造方法并行性问题交互/通信问题五种并行编程风范1并行程序设计难的原因技术先行,缺乏理论指导程序的语法/语义复杂,需要用户自已处理任务/数据
2、的划分/分配数据交换同步和互斥性能平衡并行语言缺乏代可扩展和异构可扩展,程序移植困难,重写代码难度太大环境和工具缺乏较长的生长期,缺乏代可扩展和异构可扩展2多核编程的挑战和机遇及区别挑战串行思维向并行思维转变的挑战不是简单的将并行程序移植到多核上,而是"并行程序"的优化和"串行程序"的并行化机遇程序员都站在同一起跑线上提高了软件人员的门槛晋升为高级人才的机遇与单核多线程编程的区别锁竞争的差异:多核会导致CPU的闲置负载平衡困难任务优先级抢占的不同Cache伪共享问题可扩展性问题、能耗问题等3并行语言的构造方法串行代码段for(i=0;i3、;for(i=0;i4、ortran90(c)加编译注释构造并行程序的方法#pragmaparallel#pragmashared(A,b,c)#pragmalocal(i){#pragmapforiterate(i=0;N;1)for(i=0;i5、在同一时间可以执行不同的指令SPMD:各个进程是同构的,多个进程对不同的数据执行相同的代码(一般是数据并行的同义语)常对应并行循环,数据并行结构,单代码MPMD:各个进程是异构的,多个进程执行不同的代码(一般是任务并行,或功能并行,或控制并行的同义语)常对应并行块,多代码要为有1000个处理器的计算机编写一个完全异构的并行程序是很困难的并行块parbeginS1S2S3…….SnparendS1S2S3…….Sn可以是不同的代码并行循环:当并行块中所有进程共享相同代码时parbeginS1S2S3…….SnparendS1S2S3…….Sn是相同代码简化为parfor(i=1;i<6、=n,i++)S(i)进程的同构性4并行性问题用单代码方法说明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个处理结点上:runA–numnodesNSPMD程序的构造方法用数据并行程序的构造方法要说明以下SPMD程序:parfor(i=0;i<=N,i++){C[i]=A[i]+B[i];}用7、户可用一条数据赋值语句:C=A+B或forall(i=1,N)C[i]=A[i]+B[i]进程的同构性4并行性问题用SPMD伪造MPMD要说明以下MPMD程序:parbeginS1S2S3parend可以用以下SPMD程序:parfor(i=0;i<3,i++){if(i=0)S1if(i=1)S2if(i=2)S3}因此,对于可扩展并行机来说,只要支持SPMD就足够了MPMD程序的构造方法用多代码方法说明MPMD对不提供并行块或并行循环的语言要说明以下MPMD程序:
3、;for(i=0;i4、ortran90(c)加编译注释构造并行程序的方法#pragmaparallel#pragmashared(A,b,c)#pragmalocal(i){#pragmapforiterate(i=0;N;1)for(i=0;i5、在同一时间可以执行不同的指令SPMD:各个进程是同构的,多个进程对不同的数据执行相同的代码(一般是数据并行的同义语)常对应并行循环,数据并行结构,单代码MPMD:各个进程是异构的,多个进程执行不同的代码(一般是任务并行,或功能并行,或控制并行的同义语)常对应并行块,多代码要为有1000个处理器的计算机编写一个完全异构的并行程序是很困难的并行块parbeginS1S2S3…….SnparendS1S2S3…….Sn可以是不同的代码并行循环:当并行块中所有进程共享相同代码时parbeginS1S2S3…….SnparendS1S2S3…….Sn是相同代码简化为parfor(i=1;i<6、=n,i++)S(i)进程的同构性4并行性问题用单代码方法说明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个处理结点上:runA–numnodesNSPMD程序的构造方法用数据并行程序的构造方法要说明以下SPMD程序:parfor(i=0;i<=N,i++){C[i]=A[i]+B[i];}用7、户可用一条数据赋值语句:C=A+B或forall(i=1,N)C[i]=A[i]+B[i]进程的同构性4并行性问题用SPMD伪造MPMD要说明以下MPMD程序:parbeginS1S2S3parend可以用以下SPMD程序:parfor(i=0;i<3,i++){if(i=0)S1if(i=1)S2if(i=2)S3}因此,对于可扩展并行机来说,只要支持SPMD就足够了MPMD程序的构造方法用多代码方法说明MPMD对不提供并行块或并行循环的语言要说明以下MPMD程序:
4、ortran90(c)加编译注释构造并行程序的方法#pragmaparallel#pragmashared(A,b,c)#pragmalocal(i){#pragmapforiterate(i=0;N;1)for(i=0;i5、在同一时间可以执行不同的指令SPMD:各个进程是同构的,多个进程对不同的数据执行相同的代码(一般是数据并行的同义语)常对应并行循环,数据并行结构,单代码MPMD:各个进程是异构的,多个进程执行不同的代码(一般是任务并行,或功能并行,或控制并行的同义语)常对应并行块,多代码要为有1000个处理器的计算机编写一个完全异构的并行程序是很困难的并行块parbeginS1S2S3…….SnparendS1S2S3…….Sn可以是不同的代码并行循环:当并行块中所有进程共享相同代码时parbeginS1S2S3…….SnparendS1S2S3…….Sn是相同代码简化为parfor(i=1;i<6、=n,i++)S(i)进程的同构性4并行性问题用单代码方法说明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个处理结点上:runA–numnodesNSPMD程序的构造方法用数据并行程序的构造方法要说明以下SPMD程序:parfor(i=0;i<=N,i++){C[i]=A[i]+B[i];}用7、户可用一条数据赋值语句:C=A+B或forall(i=1,N)C[i]=A[i]+B[i]进程的同构性4并行性问题用SPMD伪造MPMD要说明以下MPMD程序:parbeginS1S2S3parend可以用以下SPMD程序:parfor(i=0;i<3,i++){if(i=0)S1if(i=1)S2if(i=2)S3}因此,对于可扩展并行机来说,只要支持SPMD就足够了MPMD程序的构造方法用多代码方法说明MPMD对不提供并行块或并行循环的语言要说明以下MPMD程序:
5、在同一时间可以执行不同的指令SPMD:各个进程是同构的,多个进程对不同的数据执行相同的代码(一般是数据并行的同义语)常对应并行循环,数据并行结构,单代码MPMD:各个进程是异构的,多个进程执行不同的代码(一般是任务并行,或功能并行,或控制并行的同义语)常对应并行块,多代码要为有1000个处理器的计算机编写一个完全异构的并行程序是很困难的并行块parbeginS1S2S3…….SnparendS1S2S3…….Sn可以是不同的代码并行循环:当并行块中所有进程共享相同代码时parbeginS1S2S3…….SnparendS1S2S3…….Sn是相同代码简化为parfor(i=1;i<
6、=n,i++)S(i)进程的同构性4并行性问题用单代码方法说明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个处理结点上:runA–numnodesNSPMD程序的构造方法用数据并行程序的构造方法要说明以下SPMD程序:parfor(i=0;i<=N,i++){C[i]=A[i]+B[i];}用
7、户可用一条数据赋值语句:C=A+B或forall(i=1,N)C[i]=A[i]+B[i]进程的同构性4并行性问题用SPMD伪造MPMD要说明以下MPMD程序:parbeginS1S2S3parend可以用以下SPMD程序:parfor(i=0;i<3,i++){if(i=0)S1if(i=1)S2if(i=2)S3}因此,对于可扩展并行机来说,只要支持SPMD就足够了MPMD程序的构造方法用多代码方法说明MPMD对不提供并行块或并行循环的语言要说明以下MPMD程序:
此文档下载收益归作者所有