OpenMP Tutorials 01

在最开始的地方,笔者需要先声明一下,第一,这是一篇针对性的翻译,或者说是自己理解后写出的教程,旨在让大家尽快掌握OPENMP的使用,是以应用为目的,关于介绍历史的部分我不会重点翻译。第二,笔者在FORTRAN方面造诣有限,不能很深入的在FORTRAN视角进行介绍。原blog地址为:link

第一篇blog简单介绍一点并行计算知识,从下一篇开始,我们进入OpenMP编程的具体实现。

OpenMP简介与编程模型

OpenMp为Open Multi-Processing的缩写。他是一种易学习的并行模型,同时兼具有可兼容性,易于使用的特点。

共享存储模型

并行计算常见的存储模型有UMA,NUMA,COMA,CCNUMA等等……
我们这里OpenMP支持的是UMA以及NUMA。

UMA

Alt

UMA是Uniform Memory Access的缩写,即均匀存储访问。他具有以下特点:

  • 物理存储器被所有处理器所共享
  • 所有处理器访问内存的耗时是相同的
  • 每个处理器可以自带Cache
  • 除内存之外,所有的外围设备都是共享的

具有上述特点的高紧密的联系的系统,也叫做紧耦合系统

NUMA

Alt
NUMA自然是Non-Uniform Memory Access的缩写。特点与UMA的区别在于存储器的位置,存储器可以分布在各个处理器之间,同时自然也会有另一个问题——各个处理器访问内存的时间有所差异。

基于线程

OpenMP的模型是基于线程(Threads)的并行。
在这里可以简单的将线程理解成一个可以独立运行的子程序。
线程的概念是建立在进程之上的,没有进程,就没有线程一说。

Fork - Join模型

在这里还是保留原词,这个模型是OpenMP理解的关键中的关键。
程序的运行模式是这样的,从主进程开始,运行直到遇到第一个Fork点,开始进入并行域。之后再离开并行域。回到Join区,继续还运行主进程,知道遇到下一个Frok点。
Alt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值