Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5944871
  • 博文数量: 680
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 11839
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(680)

分类:

2006-03-06 09:29:53

尺 寸 :  
目 录 : OpenMP概述
OpenMP编程风格
OpenMP编程元素
OpenMP计算实例
运行库例程与环境变量
附录 OpenMP运行库例程
原 文 : OpenMP起源于ANSI X3H5标准,它具有简单、移植性好和可扩展等优点,是共享存储系统编程的一个工业标准。实际上OpenMP并不是一门新的语言,它是对基本语言(如Fortan77、Fortan90、C、C++等)的扩展。OpenMP规范中定义的制导指令、运行库和环境变量,能够使用户在保证程序的可移植性的前提下,按照标准将已有的串行程序逐步并行化。制导指令是对程序设计语言的扩展,进一步提供了对并行区域、工作共享、同步构造的支持,并且支持数据的共享和私有化。这样,用户对串行程序添加制导指令的过程,就类似于进行显式并行程序设计。运行库和环境变量,使得用户可以调整并行程序的执行环境。OpenMP的提出,是希望遵循该并行编程模型的并行程序,可以在不同的产商提供的共享存储体系结构间比较容易地移植。实际上,已经有许多硬件和软件供应商提供支持OepnMP的编译器,如DEC、Intel、IBM、HP、Sun、SGI、及U.S.DOE ASCI program等,并且包括了UNIX和NT两种操作系统平台。目前,Fortran77、Fortran90、C、C++语言的实现规范已经完成,详细说明可参看。
13.3.2 OpenMP编程风格
1 OpenMP并行编程模型
首先,OpenMP是基于线程的并行编程模型(Programming Model),一个共享存储的进程由多个线程组成,OpenMP就是基于已有线程的共享编程范例;其次,OpenMP是一个外部的编程模型,而不是自动编程模型,它能够使程序员完全控制并行化。
OpenMP使用Fork-Join并行执行模型。所有的OpenMP程序开始于一个单独的主线程(Master Thread)。主线程会一直串行的执行,直到遇见第一个并行域(Parallel Region)才开始并行执行。接下来的过程如下:①Fork:主线程创建一队并行的线程,然后,并行域中的代码在不同的线程队中并行执行;②Join:当主线程在并行域中执行完之后,它们或被同步或被中断,最后只有主线程在执行。实际上,所有OpenMP的并行化,都是通过使用嵌入到C/C++或Fortran源代码中的编译制导语句来达到的。并且,一个OpenMP应用编程接口(API)的并行结构可以嵌入到别的并行结构中去。应用编程接口还可以随着不同并行域的需要动态地改变线程数。有些应用也可能不支持上述性质。
......
关键词 : OpenMP 并行程序设计 OpenMP编程        
阅读(5137) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~