共享存储系统编程.ppt

上传人:小飞机 文档编号:6091498 上传时间:2023-09-23 格式:PPT 页数:50 大小:420KB
返回 下载 相关 举报
共享存储系统编程.ppt_第1页
第1页 / 共50页
共享存储系统编程.ppt_第2页
第2页 / 共50页
共享存储系统编程.ppt_第3页
第3页 / 共50页
共享存储系统编程.ppt_第4页
第4页 / 共50页
共享存储系统编程.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《共享存储系统编程.ppt》由会员分享,可在线阅读,更多相关《共享存储系统编程.ppt(50页珍藏版)》请在三一办公上搜索。

1、国家高性能计算中心(合肥),第十三章 共享存储系统编程,国家高性能计算中心(合肥),共享存储系统编程,13.1 ANSI X3H5共享存储模型13.2 POSIX 线程模型13.3 OpenMP模型,国家高性能计算中心(合肥),编程标准的作用,规定程序的执行模型 SPMD,SMP 等如何表达并行性DOACROSS,FORALL,PARALLEL,INDEPENDENT 如何表达同步Lock,Barrier,Semaphore,Condition Variables如何获得运行时的环境变量threadid,num of processes,国家高性能计算中心(合肥),ANSI X3H5共享存储器

2、模型,Started in the mid-80s with the emergence of shared memory parallel computers with proprietary directive driven programming environments更早的标准化结果PCF共享存储器并行Fortran1993年制定的概念性编程模型Language BindingCFortran 77Fortran 90,国家高性能计算中心(合肥),并行块(工作共享构造)并行块(psections.end psections)并行循环(pdo.Endo pdo)单进程(psingle.

3、End psingle)可嵌套非共享块重复执行隐式路障(nowait),显式路障和阻挡操作共享/私有变量线程同步门插销(latch):临界区锁:test,lock,unlock事件:wait,post,clear序数(ordinal):顺序,国家高性能计算中心(合肥),X3H5:并行性构造,Program main!程序以顺序模式开始,此时只有一个A!A只由基本线程执行,称为主线程parallel!转换为并行模式,派生出多个子线程(一个组)B!B为每个组员所复制psections!并行块开始sectionC!一个组员执行CsectionD!一个组员执行Dend psections!等待C和D都

4、结束psingle!暂时转换成顺序模式E!已由一个组员执行end psingle!转回并行模式pdo i=1,6!pdo构造开始F(i)!组员共享F的六次迭代end pdo no wait!无隐式路障同步G!更多的复制代码end parallel!转为顺序模式H!初始化进程单独执行H.!可能有更多的并行构造End,国家高性能计算中心(合肥),线程,隐式路障同步,P,Q,R,A,B,C,E,F(1:2),G,H,G,G,F(3:4),F(5:6),D,B,B,隐式路障同步,隐式路障同步,无隐式路障同步,隐式路障同步,国家高性能计算中心(合肥),共享存储系统编程,13.1 ANSI X3H5共享存

5、储模型13.2 POSIX 线程模型13.3 OpenMP模型,国家高性能计算中心(合肥),POSIX线程模型,IEEE/ANSI标准IEEE POSIX 1003.1c-1995线程标准Unix/NT操作系统层上的,SMPChorus,Topaz,Mach CthreadsWin32 ThreadGetThreadHandle,SetThreadPriority,SuspendThread,ResumeThreadTLS(线程局部存储)TlsAlloc,TlsSetValueLinuxThreads:_clone and sys_clone用户线程和内核线程(LWP)(一到一,一到多,多到多

6、),国家高性能计算中心(合肥),What Are Threads?,General-purpose solution for managing concurrency.Multiple independent execution streams.Shared state.Preemptive scheduling.Synchronization(e.g.locks,conditions).,Shared state(memory,files,etc.),Threads,国家高性能计算中心(合肥),线程共享相同的内存空间。与标准 fork()相比,线程带来的开销很小。内核无需单独复制进程的内存空

7、间或文件描述符等等。这就节省了大量的 CPU 时间。和进程一样,线程将利用多 CPU。如果软件是针对多处理器系统设计的,计算密集型应用。支持内存共享无需使用繁琐的 IPC 和其它复杂的通信机制。Linux _clone不可移植,Pthread可移植。POSIX 线程标准不记录任何“家族”信息。无父无子。如果要等待一个线程终止,就必须将线程的 tid 传递给 pthread_join()。线程库无法为您断定 tid。,国家高性能计算中心(合肥),POSIX Threads:Basics and Examples by Uday Kamathhttp:/www.coe.uncc.edu/abw/p

8、arallel/pthreads/pthreads.htmlPOSIX 线程详解:一种支持内存共享的简单和快捷的工具by Daniel Robbins,国家高性能计算中心(合肥),国家高性能计算中心(合肥),线程调用线程管理,POSIXSolaris 2pthread_createthr_createpthread_exitthr_exitpthread_killthr_killpthread_jointhr_joinpthread_selfthr_self,国家高性能计算中心(合肥),线程调用线程同步和互斥,POSIXSolaris 2pthread_mutex_initmutex_init

9、pthread_ mutex_destroy mutex_destroypthread_ mutex_lock mutex_lockpthread_ mutex_trylock mutex_trylockpthread_ mutex_unlock mutex_unlockpthread_cond_initpthread_cond_destroypthread_cond_waitpthread_cond_timedwaitpthread_cond_signalpthread_cond_broadcast,国家高性能计算中心(合肥),Pthreads实现计算的实例 1,国家高性能计算中心(合肥),

10、Pthreads实现计算的实例 2,国家高性能计算中心(合肥),对生产者驱动的有界缓冲区问题的Pthread条件变量解,void*producer(void*arg1)int i;for(i=1;i=SUMSIZE;i+)pthread_mutex_lock(,void*consumer(void*arg2)int i,myitem;for(;)pthread_mutex_lock(,国家高性能计算中心(合肥),共享存储系统编程,13.1 ANSI X3H5共享存储模型13.2 POSIX 线程模型13.3 OpenMP模型,国家高性能计算中心(合肥),The History of OpenM

11、PWhat is directive/pragma?Directive-based general purpose parallel programming API with emphasis on the ability to parallelize existing serial programsWhy a new standard?Whos Involved?Parallelism model and basic directivesFortran77,Fortran90C,C+,OpenMP标准,国家高性能计算中心(合肥),The History of OpenMP,A key int

12、ermediate step was X3H5 in the late 80s.An official standards effort to agree on a parallel dialect of Fortran for shared memory computers.The X3H5 effort failed.It was too big and too late.OpenMP is born:In 1996 a group formed to create an industry standard set of directives for SMP programmingThis

13、 group called itself the OpenMP Architecture Review Board(the ARB)who takes care of OpenMP,国家高性能计算中心(合肥),The History of OpenMP(cont.),The ARB has released the following specifications:OpenMP 1.0 for Fortran,Nov.1997OpenMP 1.0 for C/C+,Nov.1998OpenMP Fortran Interpretations,Spring 1999OpenMP 2.0(soon

14、)OpenMP is an evolving standard.Send comments over the feedback link on the OpenMP web site(),国家高性能计算中心(合肥),为什么要建立新标准?,ANSI X3H5,1994时机不好,分布式机器流行只支持循环级并行性,粒度太细Pthreads(IEEE Posix 1003.4a)是为低端(low end)的共享机器(如SMP)的标准对FORTRAN的支持不够适合任务并行,而不适合数据并行MPI 消息传递的编程标准,对程序员要求高HPF 主要用于分布式存储机器大量已有的科学应用程序需要很好地被继承和移植

15、,国家高性能计算中心(合肥),In a Nutshell,A set of directives(library routines,and environment variables)used to annotate a sequential program to indicate how it should be executed in parallel继承X3H5的许多概念Portable,Simple and Scalable Shared Memory Multiprocessing APInot a new languagenot automatic parallelization

16、extend base languages:Fortran77,Fortran90,C and C+Multi-vendor Support,for both UNIX and NTStandardizes Fine Grained(Loop)Parallelism,also Supports Coarse Grained Algorithms,国家高性能计算中心(合肥),OpenMP是什么?,一组编译制导语句和可调用的运行(run-time)库函数,扩充到基本语言中用来表达程序中的并行性编译制导语句包括:在串行程序中加入下列结构SPMD(Single Program Multiple Dat

17、a)constructswork-sharing constructssynchronization constructsdata environment constructs 运行库函数包括:execution environment routineslock routines 另外,在FORTRAN标准中,还包括对环境变量的描述,国家高性能计算中心(合肥),国家高性能计算中心(合肥),OpenMP当前的状况,1997年10月28日,DEC,IBM,Intel,SGI,和 Kuch&Associates 等公司的代表们决定制定一种适用于多种硬件平台的共享存储编程的新的工业应用标准接着,全球很

18、多的组织和ISV决定支持这一标准,如DOE/ASCI,Livermore Software Technology Corp.,Fluent Inc.,Absoft Corp.,Ansys Inc.Etc.目前支持FORTRAN语言,C 和C,并建有专门的网址 在科研机构中,也引起了足够的重视,被认为是21世纪最受欢迎的并行编程标准OpenMP on NOWs(SC98,Nov.1998)Integrated OpenMP and MPI on Clusters,国家高性能计算中心(合肥),国家高性能计算中心(合肥),SPMD的程序执行模型,P0,P1 P2.,Pn,国家高性能计算中心(合肥),

19、SMP的程序执行模型,国家高性能计算中心(合肥),OpenMP的程序执行模型,国家高性能计算中心(合肥),Parallel and work sharing directivesdata environment directivessynchronization directives,国家高性能计算中心(合肥),编译制导语句(1),Work-sharing constructs将结构内的任务分配到处理机中,必须动态地放在Parallel region construct 中,进入这种结构之前并不隐含BARRIER操作DO(最常用)有SCHEDULE选项,可以指定采用什么调度算法SECTIONS

20、(可以流水线执行之)SINGLE(只有一个处理机执行之),国家高性能计算中心(合肥),Parallel Region:parallel,end parallelWork Sharing:do,sections,single(parallel do,nowait)Fork-Join model of parallel execution(static,dynamic,orphaned),Parallel Region and Work Sharing Directives,国家高性能计算中心(合肥),编译制导语句(2),指令格式固定形式!$OMP 自由形式!$OMP,*$OMP,C$OMPPar

21、allel Region Construct!$OMP Parallel clause,clause.Do I=1,20 A(I)=A(I)+B(I)!$OMP End Parallel(隐含BARRIER操作)其中Clause可以为:PRIVATE(list),SHARED(list),COPYIN(list),FIRSTPRIVATE(list),DEFAULT(PRIVATE|SHARED|NONE),REDUCTION(operation|intrinsic:list),IF(logical_expression),国家高性能计算中心(合肥),DO编译制导语句,!$OMP DO cla

22、use,clause.do_loop!$OMP END DO NOWAIT例子:!$OMP PARALLEL DO DO I=2,N B(I)=(A(I)+A(I-1)/2.0 ENDDO!$OMP END DO NOWAIT!$OMP END PARALLEL,国家高性能计算中心(合肥),SECTIONS 编译制导语句,!$OMP SECTIONS!$OMP SECTION block1!$OMP SECTION block2!$OMP SECTION block3!$OMP END SECTIONS,国家高性能计算中心(合肥),编译制导语句(3),Data environment cons

23、tructsTHREADPRIVATEData scope attribute clausesPRIVATESHAREDDEFAULTFIRSTPRIVATELASTPRIVATEREDUCTIONCOPYIN,国家高性能计算中心(合肥),Data Scope attribute clauses:Private,Shared,Default,Firstprivate,Lastprivate,Reduction and Copyin/Copyout(value undefined entering/exiting parallel region)Threadprivate directives:

24、Private to a thread but global within the thread(SMP)Fortran:COMMON blocks/C:file scope and static variables,Data Environment Directives,国家高性能计算中心(合肥),编译制导语句(4),Synchronization constructsMASTERCRITICALBARRIERATOMICFLUSHORDERED,国家高性能计算中心(合肥),例子(ORDERED),规定了各个线程执行的顺序!$OMP PARALLEL!$OMP DO ORDERED SCHE

25、DULE(DYNAMIC)DO I=LowBound,UpBound,Step CALL WORK(I)END DO!$OMP END PARALLEL SUBROUTINE WORK(K)!$OMP ORDERED WRITE(*,*)K!$OMP END ORDERED END,国家高性能计算中心(合肥),Synchronization Directives,master,barrier,critical,atomic,flush,ordered,国家高性能计算中心(合肥),OpenMP的Orphan新特性 1,为了便于支持粗粒度的任务级并行,OpenMP 提供了Orphan制导语句Orp

26、han制导语句是指那些在并行区域(Parallel Region,如PARALLEL)之外的制导语句 在OpenMP中提供了一种绑定规则使得这些Orphan制导语句与调用它们的并行区域产生联系,这样大大地增加了程序的模块性。X3H5 中不支持这一特点,所有的同步和控制语句都必须依次出现在并行区域内,无模块性。,国家高性能计算中心(合肥),OpenMP的Orphan特性 2,国家高性能计算中心(合肥),运行库函数(1),Execution Environment RoutinesOMP_SET_NUM_THREADSOMP_GET_NUM_THREADSOMP_GET_MAX_THREADSOM

27、P_GET_THREAD_NUMOMP_GET_NUM_PROCSOMP_IN_PARALLELOMP_SET_DYNAMICOMP_GET_DYNAMICOMP_SET _NESTED OMP_GET_NESTED,国家高性能计算中心(合肥),运行库函数(2),Lock RoutinesOMP_INIT_LOCKOMP_DESTROY_LOCKOMP_SET_LOCKOMP_UNSET_LOCKOMP_TEST_LOCK,国家高性能计算中心(合肥),OpenMP计算的实例,国家高性能计算中心(合肥),MPI计算的实例,国家高性能计算中心(合肥),OpenMP与其他标准的比较,国家高性能计算中心(合肥),OpenMP的优点与缺点,优点提供了一个可用的编程标准 可移植性,简单,可扩展性灵活支持多线程,具有负载平衡的潜在能力支持Orphan Scope,使程序更具有模块化缺点只适用于硬件共享存储型的机器动态可变的线程数使得支持起来困难,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号