- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C07-OpenMP多核编程
多核并行程序设计 谭光明 博士 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将在物
文档评论(0)