资源描述:
《共享存储系统编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十三章共享存储系统编程国家高性能计算中心(合肥)共享存储系统编程13.1ANSIX3H5共享存储模型13.2POSIX线程模型13.3OpenMP模型国家高性能计算中心(合肥)编程标准的作用规定程序的执行模型SPMD,SMP等如何表达并行性DOACROSS,FORALL,PARALLEL,INDEPENDENT如何表达同步Lock,Barrier,Semaphore,ConditionVariables如何获得运行时的环境变量threadid,numofprocesses国家高性能计算中心(合肥)ANSIX3H5共享存储器模型Startedinthemid-80’swith
2、theemergenceofsharedmemoryparallelcomputerswithproprietarydirectivedrivenprogrammingenvironments更早的标准化结果—PCF共享存储器并行Fortran1993年制定的概念性编程模型LanguageBindingCFortran77Fortran90国家高性能计算中心(合肥)并行块(工作共享构造)并行块(psections...endpsections)并行循环(pdo...Endopdo)单进程(psingle...Endpsingle)可嵌套非共享块重复执行隐式路障(nowait)
3、,显式路障和阻挡操作共享/私有变量线程同步门插销(latch):临界区锁:test,lock,unlock事件:wait,post,clear序数(ordinal):顺序国家高性能计算中心(合肥)X3H5:并行性构造Programmain!程序以顺序模式开始,此时只有一个A!A只由基本线程执行,称为主线程parallel!转换为并行模式,派生出多个子线程(一个组)B!B为每个组员所复制psections!并行块开始sectionC!一个组员执行CsectionD!一个组员执行Dendpsections!等待C和D都结束psingle!暂时转换成顺序模式E!已由一个组员执行en
4、dpsingle!转回并行模式pdoi=1,6!pdo构造开始F(i)!组员共享F的六次迭代endpdonowait!无隐式路障同步G!更多的复制代码endparallel!转为顺序模式H!初始化进程单独执行H...!可能有更多的并行构造End国家高性能计算中心(合肥)线程隐式路障同步PQRABCEF(1:2)GHGGF(3:4)F(5:6)DBB隐式路障同步隐式路障同步无隐式路障同步隐式路障同步国家高性能计算中心(合肥)共享存储系统编程13.1ANSIX3H5共享存储模型13.2POSIX线程模型13.3OpenMP模型国家高性能计算中心(合肥)POSIX线程模型IEEE/
5、ANSI标准—IEEEPOSIX1003.1c-1995线程标准—Unix/NT操作系统层上的,SMPChorus,Topaz,MachCthreadsWin32ThreadGetThreadHandle,SetThreadPriority,SuspendThread,ResumeThreadTLS(线程局部存储)—TlsAlloc,TlsSetValueLinuxThreads:__cloneandsys_clone用户线程和内核线程(LWP)(一到一,一到多,多到多)国家高性能计算中心(合肥)WhatAreThreads?General-purposesolutionfo
6、rmanagingconcurrency.Multipleindependentexecutionstreams.Sharedstate.Preemptivescheduling.Synchronization(e.g.locks,conditions).Sharedstate(memory,files,etc.)Threads国家高性能计算中心(合肥)线程共享相同的内存空间。与标准fork()相比,线程带来的开销很小。内核无需单独复制进程的内存空间或文件描述符等等。这就节省了大量的CPU时间。和进程一样,线程将利用多CPU。如果软件是针对多处理器系统设计的,计算密集型应用。
7、支持内存共享无需使用繁琐的IPC和其它复杂的通信机制。Linux__clone不可移植,Pthread可移植。POSIX线程标准不记录任何“家族”信息。无父无子。如果要等待一个线程终止,就必须将线程的tid传递给pthread_join()。线程库无法为您断定tid。国家高性能计算中心(合肥)POSIXThreads:BasicsandExamplesbyUdayKamathhttp://www.coe.uncc.edu/~abw/parallel/pthreads/pthreads.htmlPOSIX