乡 曙光 计算,改变您的现在 DAWNING 机群应用开发 并行编程原理及 程序设计 Parallel Programming Fundamentals and Implementation 戴荣 dair@dawning.com.cn 曙光信息产业有限公司 20064 2006年4月 共享存储编程 1/108
2006年4月 共享存储编程 1/108 机群应用开发 并行编程原理及 程序设计 Parallel Programming: Fundamentals and Implementation 戴 荣 dair@dawning.com.cn 曙光信息产业有限公司 2006.4
乡 曙光 计算,改变您的现在 DAWNING 参考文献 黄铠徐志伟著,陆鑫达等译.可扩展并行计算技术结构与编程北京机 械工业出版社,P33~56,P227-237,2000 陈国良著并行计算结构、算法、编程北京高等教育出版社,199 Barry wilkinson and Michael Allen. Parallel programming techniques and Applications using Networked workstations and parallel Computers). Prentice Hall, 1999 李晓梅,莫则尧等著.可扩展并行算法的设计与分析北京:国防工业出 版社,2000 张宝琳谷同祥等著.数值并行计算原理与方法北京国防工业出版 社,1999 都志辉著.高性舵计算并行编程技术MP并行程序设计北京清华 大学出版社,2001 2006年4月 共享存储编程 2/108
2006年4月 共享存储编程 2/108 参考文献 黄铠,徐志伟著,陆鑫达等译. 可扩展并行计算技术,结构与编程.北京:机 械工业出版社, P.33~56,P.227~237, 2000. 陈国良著.并行计算—结构、算法、编程. 北京:高等教育出版社,1999. Barry Wilkinson and Michael Allen. Parallel Programming(Techniques and Applications using Networked Workstations and Parallel Computers). Prentice Hall, 1999. 李晓梅,莫则尧等著. 可扩展并行算法的设计与分析. 北京:国防工业出 版社,2000. 张宝琳,谷同祥等著. 数值并行计算原理与方法. 北京:国防工业出版 社,1999. 都志辉著. 高性能计算并行编程技术—MPI并行程序设计. 北京:清华 大学出版社, 2001
乡 曙光 计算,改变您的现在 DAWNING 相关网址 Mpi:http://ww.mpi-forum.org http:/www.mcs.anl.gov/mpi Pthreadshttp://www.oreilly.com Pvm:http://www.epm.ornl.gov/pvm/ Opemmp:http://www.openmp.org 网上搜索www.google.com 2006年4月 共享存储编程 3/108
2006年4月 共享存储编程 3/108 相关网址 MPI: http://ww.mpi-forum.org, http://www.mcs.anl.gov/mpi Pthreads: http://www.oreilly.com PVM: http://www.epm.ornl.gov/pvm/ OpemMP: http://www.openmp.org 网上搜索:www.google.com
乡 曙光 计算,改变您的现在 DAWNING 共享存储编程 Programming with Shared Memory 2006年4月 共享存储编程 4/108
2006年4月 共享存储编程 4/108 共享存储编程 Programming with Shared Memory
乡 曙光 计算,改变您的现在 DAWNING 共亨存储并行机模型 体系结构特点 ·多台处理机通过互联网络共享一个 统一的内存空间,通过单一内存地址来 实现处理机间的协调 内存空间也可由多个存储器模块构 CPU CPU CPU 成 Cache Cache Cache 每台处理机可以执行相同或不同的 指令流,每台处理机可以直接访问到所 有数据 ystem Bus or crossbar 处理机间通信是借助于共享主存来 实现的 Memory Memory 可扩展性差,当处理机需要同时访问 共享全局变量时,产生内存竞争现象而 严重影响效率,比较适合中小规模应用 问题的计算和事务处理。 2006年4月 共享存储编程 5/108
2006年4月 共享存储编程 5/108 共享存储并行机模型 体系结构特点: •多台处理机通过互联网络共享一个 统一的内存空间,通过单一内存地址来 实现处理机间的协调. •内存空间也可由多个存储器模块构 成. •每台处理机可以执行相同或不同的 指令流,每台处理机可以直接访问到所 有数据. •处理机间通信是借助于共享主存来 实现的. •可扩展性差,当处理机需要同时访问 共享全局变量时,产生内存竞争现象而 严重影响效率,比较适合中小规模应用 问题的计算和事务处理
乡 曙光 计算,改变您的现在 DAWNING 共享存储编程标准与特点 共享存储器编程标准 Pthreads(线程标准) X3H5(线程标准) OpenMP(最常用的共享存储并行编程方式,是我们讨论的重点 共享存储器编程特点 显式多线程库调用( Pthreads) 编译制导语句, OpenMP等 语言 C, Fortran77, Fortran90/95, C++ 2006年4月 共享存储编程 6/108
2006年4月 共享存储编程 6/108 共享存储编程标准与特点 共享存储器编程标准 Pthreads(线程标准) X3H5(线程标准) OpenMP(最常用的共享存储并行编程方式,是我们讨论的重点.) 共享存储器编程特点 显式多线程库调用.(Pthreads). 编译制导语句,OpenMP等. 语言 C,Fortran77,Fortran90/95,C++…
乡 曙光 计算,改变您的现在 DAWNING 并行编程标准 线程库标准( Thread library) Win 32 AP POSIX threads线程模型 X3H5:概念性线程模型 编译制导( Compiler Directives OpenMP-portable shared memory parallelism 2006年4月 共享存储编程 7/108
2006年4月 共享存储编程 7/108 并行编程标准 线程库标准(Thread Library) – Win32 API. – POSIX threads线程模型. – X3H5:概念性线程模型 编译制导(Compiler Directives) – OpenMP - portable shared memory parallelism
乡 曙光 计算,改变您的现在 DAWNING 为什么流行多线程编程? 线程:在进程的内部执行的指令序列 相对于进程,线程开销小: 创建一个线程的时间大约是建立一个新进程的130。如在Sun475工作 上站上,创建一个非绑定线程约为52微秒,而ork0次的时间为 1700微秒。 线程同步时间约是进程同步时间的13 线程与RPc相结合,发挥多处理机的处理能力 发挥多处理器的处理能力 开发程序的并发性,改善程序的结构 容易实现数据共享:由于线程共用内存地址,因此可实现数据共享 例:一高性能Web服务器可为每一打开链接的浏览器分配一个线程,所 有线程即可共用同一 cache来访问网站的热点话题 统一的标准: 以前各开发商提供互不兼容的线程库,结果导致多线程程序不能很好地 移值。自1995年的POSX线程标准实施之后,极大地促进多线程编程的」 统一。各系统都支持 Pthreads,如 Linux、SUN、 IBM AIX等。 2006年4月 共享存储编程 8/108
2006年4月 共享存储编程 8/108 为什么流行多线程编程? 线程:在进程的内部执行的指令序列. 相对于进程,线程开销小: 创建一个线程的时间大约是建立一个新进程的1/30。如在Sun4/75工作 上站上,创建一个非绑定线程约为52微秒,而fork()一次的时间为 1700微秒。 线程同步时间约是进程同步时间的1/3. 线程与RPC相结合,发挥多处理机的处理能力; 发挥多处理器的处理能力; 开发程序的并发性,改善程序的结构. 容易实现数据共享:由于线程共用内存地址,因此可实现数据共享 例:一高性能Web服务器可为每一打开链接的浏览器分配一个线程,所 有线程即可共用同一cache来访问网站的热点话题 统一的标准: 以前各开发商提供互不兼容的线程库,结果导致多线程程序不能很好地 移值。自1995年的POSIX线程标准实施之后,极大地促进多线程编程的 统一。各系统都支持Pthreads,如Linux、SUN、IBM AIX等
乡 曙光 计算,改变您的现在 DAWNI Pthreads线程模型 posX10034a小组研究多线程编程标准.当标准完成后,大多数支 持多线程的系统都支持PoSX接口很好的改善了多线程编程的可移 植性 EEE Portable Operating System Interface, POSIX, 10031-1995标准:PoSX线程模型pt/ reads 2006年4月 共享存储编程 9/108
2006年4月 共享存储编程 9/108 Pthreads线程模型 POSIX1003.4a小组研究多线程编程标准. 当标准完成后,大多数支 持多线程的系统都支持POSIX接口.很好的改善了多线程编程的可移 植性. IEEE Portable Operating System Interface, POSIX, 1003.1-1995标准:POSIX线程模型:pthreads
乡 曙光 计算,改变您的现在 DAWNING 线程管理( Pthread为例 创建 pthread_create 终止: pthread_exit 汇合 pthread_ join 分离 pthread_detach 线程属性初始化: pthread_attr_init 唯一执行 pthread_once 2006年4月 共享存储编程 10/108
2006年4月 共享存储编程 10/108 线程管理(Pthread为例) 创建:pthread_create 终止:pthread_exit 汇合:pthread_join 分离:pthread_detach 线程属性初始化:pthread_attr_init 唯一执行:pthread_once