C07-OpenMP多核编程.pdf
文本预览下载声明
多核并行程序设计
谭光明 博士
tgm@
中国科学院计算技术研究所
国家智能计算机研究开发中心
计算机体系结构国家重点实验室
• POSIX Threads Programming
• OpenMP
参考文献
• B. Nichols et al. Pthreads Programming . OReilly
and Associates
• Pthreads:
• 陈文光译, 《MPI +OpenMP并行程序设计》清
华大学出版社
• Michael J.Quinn, 《并行程序设计:C、MPI与
OpenMP》 (影印版)清华大学出版社
• OpemMP:
Share Memory
• 多台处理机通过互联网络共享一个统
一的内存空间,通过单一内存地址来
实现处理机间的协调.
• 内存空间也可由多个存储器模块构成.
• 每台处理机可以执行相同或不同的指
令流,每台处理机可以直接访问到所
有数据.
• 处理机间通信是借助于共享主存来实
现的.
• 可扩展性差,当处理机需要同时访问
共享全局变量时,产生内存竞争现象
而严重影响效率,比较适合中小规模
应用问题的计算和事务处理.
多线程为何流行
• 多核cpu的出现
• 线程:在进程的内部执行的指令序列.
• 相对于进程,线程开销小:
– 创建一个线程的时间大约是建立一个新进程的1/30.
– 线程同步时间约是进程同步时间的1/3.
• 开发程序的并发性,改善程序的结构.
• 容易实现数据共享:线程共用内存地址
• 统一的标准:
– 1995年的POSIX线程标准实施,各系统都支持
Pthreads 。
共享存储编程标准
• 共享存储器编程标准
– Win32 API (线程标准)
– Pthreads(线程标准)
– X3H5(线程标准)
– OpenMP(最常用的共享并行编程方式)
• 共享存储器编程特点
– 显式多线程库调用.(Win32 API ,Pthreads).
– 编译制导语句,OpenMP.
• 语言
– C,C++,Fortran77,Fortran90/95…
Pthreads线程模型
• 以前各开发商提供互不兼容的线程库,结果
导致多线程程序不能很好地移值.
• POSIX1003.4a小组研究多线程编程标准. 当
标准完成后,大多数支持多线程的系统都支
持POSIX接口.很好的改善了多线程编程的可
移植性.
• IEEE Portable Operating System Interface,
POSIX, 1003.1-1995标准:POSIX线程模
型:pthreads.
Solaris 线程
- - -广泛使用的商品化产品
两级结构特点:用户级+内核级 • Solaris线程特点:
用户线程:工作在用户模式/用户空间
内核线程:工作在内核模式/内核空间 – 非常低的创建开销;
用户级:动态链接的线程库实现线
程应用编程接口,并管理用户线程 – 快速同步(同步在用户空间进行);
内核级:则管理线程池
LWP:每个进程有一个或多个线程, – 统一的实现:线程库与调试工具;
被分配一个或多个LWP,内核不能
进程P1 进程P2 进程P3
管理用户线程,只能管理LWP;
虚拟处理器.
进程的并发度 :被分配到进程上 用户
的LWP数量.
线程池:线程库调度线程在它的线
程池中运行
处理器池:来自进程的LWP将在物
显示全部