文档介绍:第十三章共享存储系统编程
国家高性能计算中心(合肥)
共享存储系统编程
ANSI X3H5共享存储模型
POSIX 线程模型
OpenMP模型
国家高性能计算中心(合肥)
编程标准的作用
规定程序的执行模型
SPMD, SMP 等
如何表达并行性
DOACROSS, FORALL, PARALLEL,INDEPENDENT
如何表达同步
Lock, Barrier, Semaphore, Condition Variables
如何获得运行时的环境变量
threadid, num of processes
国家高性能计算中心(合肥)
ANSI X3H5共享存储器模型
Started in the mid-80’s with the emergence of shared memory puters with proprietary directive driven programming environments
更早的标准化结果—PCF共享存储器并行Fortran
1993年制定的概念性编程模型
Language Binding
C
Fortran 77
Fortran 90
国家高性能计算中心(合肥)
并行块(工作共享构造)
并行块(psections ... end psections)
并行循环(pdo ... Endo pdo)
单进程(psingle ... End psingle)
可嵌套
非共享块重复执行
隐式路障(nowait),显式路障和阻挡操作
共享/私有变量
线程同步
门插销(latch):临界区
锁:test,lock,unlock
事件:wait,post,clear
序数(ordinal):顺序
国家高性能计算中心(合肥)
X3H5:并行性构造
Program main !程序以顺序模式开始,此时只有一个
A !A只由基本线程执行,称为主线程
parallel !转换为并行模式,派生出多个子线程(一个组)
B !B为每个组员所复制
psections !并行块开始
section
C !一个组员执行C
section
D !一个组员执行D
end psections !等待C和D都结束
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
隐式路障同步
隐式路障同步
无隐式路障同步
隐式路障同步
国家高性能计算中心(合肥)
POSIX线程模型
IEEE/ANSI标准—IEEE POSIX -1995线程标准—Unix/NT操作系统层上的,SMP
Chorus, Topaz, Mach Cthreads
Win32 Thread
GetThreadHandle,SetThreadPriority,SuspendThread,ResumeThread
TLS(线程局部存储)—TlsAlloc, TlsSetValue
LinuxThreads:__clone and sys_clone
用户线程和内核线程(LWP)(一到一,一到多,多到多)
国家高性能计算中心(合肥)
What Are Threads?
General-purpose solution for managing concurrency.
Multiple independent execution streams.
Shared state.
Preemptive scheduling.
Synchronization (. locks, conditions).
Shared state
(memory, files, etc.)
Threads
国家高性能计算中心(合肥)