一、OpenMP组成

由三大部分组成:

1、指令 Directives

2、运行时环境 Runtime Environment

3、环境变量 Environment Variable

二、指令 Directives

指令有以下几种:

并行区域 parallel region

worksharing结构 worksharing constructs

任务 tasks

同步 syncronization

数据共享特性 data-sharing attributes

1. parallel region

一个并行区域是一段被多个线程同时执行的代码

#pragma omp parallel [clause[[,]clause]...]
{
"this code is executed in parallel"
}(这里自动是一个barrier)

2. worksharing constructs

#pragma omp for
{}#pragma omp section
{}#pragma imp single
{}

这些工作会平分给所有的线程。

必须包含在一个并行区域中。

工作会被所有的工作线程接触。

在入口处没有提示barrier,在结束的时候默认有barrier(除非被指定了nowait)

在work-sharing结构中不会启动新线程

支持随机获取C++中的迭代器的循环,例子:

void iterator_example()
{std::vector vec(23);std::vector::iterator it;#pragma omp for default(none) shared(vec)for(it=vec.begin(); it<vec.end(); it++){...}
}

2.1  for 指令例子

dingx@stoker:~$ vi + 2.c#include<stdio.h>
#include<omp.h>int main()
{
int i;
int n=100,m=10;
#pragma omp parallel default(none) \shared(m,n) private(i)
{#pragma omp for nowaitfor(i=0;i<n-1;i++)printf("%d\n",i);#pragma omp for nowaitfor(i=0;i<n-1;i++)printf("%d\n",i);
}
return 0;
}

结果

dingx@stoker:~$ ./2
3
3
8
8
2
2
0
0
6
6
7
7
1
1
5
5
4
4

2.2  section 指令例子

#include<stdio.h>
#include<omp.h>int main()
{
int i;
int n=1000,m=10;
#pragma omp parallel default(none) \shared(m,n) private(i)
{#pragma omp sections{#pragma omp sectionfor(i=0;i<n-1;i++)printf("%d\n",i);#pragma omp sectionfor(i=0;i<n-1;i++)printf("%d\n",i);}
}
return 0;
}

重叠的I/O和处理

dingx@stoker:~$ cat 3.c
#pragma omp parallel sections
{#pragma omp section{for(int i=0; i<N; i++){(void)read_input(i);(void)signal_read(i);}}#pragma omp section{for(int i=0; i<N; i++){(void)wait_read(i);(void)process_data(i);(void)signal_processed(i);}}#pragma omp section{for(int i=0; i<N; i++){(void)wait_processed(i);(void)write_output(i);}}
}

2.3 single指令

#pragma omp single [private][firstprivate]\[copyprivate][nowait]
{...
}

3. Orphaning

#pragma omp parallel
{(void) dowork();
}void doword()
{#pragma omp forfor(int i=0; i<n; i++){...}
}

dowork()被并行执行

(void) dowork();
#pragma omp parallel
{(void) dowork();
}void doword()
{#pragma omp forfor(int i=0; i<n; i++){...}
}

串行部分调用dowork的部分只被主线程执行

OpenMP学习(三)相关推荐

  1. OPENMP学习笔记(1)——简介,模型,运行

    OPENMP学习笔记(1)--简介,模型,运行 简介: OpenMP的英文全称是Open Multiprocessing,一种应用程序接口(API,即Application Program Inter ...

  2. 统计学习三要素 模型+策略+算法

    统计学习方法都是由模型. 策略和算法构成的. 即统计学习方法由三要素构成, 可以简单地表示为:方法=模型+策略+算法 模型 统计学习首要考虑的问题是学习什么样的模型. 在监督学习过程中, 模型就是所要 ...

  3. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...

    机器之心报道 作者:魔王.杜伟 想不想在动画电影中拥有自己的角色?这个网站一键满足你的需求,不过竟因流量太大成本过高而下线. 近期热映的电影<花木兰>总是让人回想起 1998 年上映的同名 ...

  4. 2020届 AAAI Fellow名单新鲜出炉!!!深度学习三巨头终于齐聚

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 AAAI 是国际人工智能领域最权威的学术组织,Fellow 是该学会给予会员的最高荣誉 ...

  5. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  6. python爬虫正则表达式实例-python爬虫学习三:python正则表达式

    python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...

  7. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

  8. 实至名归!ACM宣布深度学习三巨头共同获得图灵奖

    昨日晚间,ACM(国际计算机学会)宣布,有"深度学习三巨头"之称的Yoshua Bengio.Yann LeCun.Geoffrey Hinton共同获得了2018年的图灵奖,这是 ...

  9. 【技术综述】图像与CNN发家简史,集齐深度学习三巨头

    文章首发于微信公众号<有三AI> [技术综述]图像与CNN发家简史,集齐深度学习三巨头 没有一个经典的发现会是突然之间横空出世,它总是需要一些积淀. 提起卷积神经网络,我们总会从LeNet ...

  10. spring security 学习三-rememberMe

    spring security 学习三-rememberMe 功能:登录时的"记住我"功能 原理: rememberMeAuthenticationFilter在security过 ...

最新文章

  1. 网络部署原理加实验步骤
  2. VISTA IIS Worker Process 已停止工作 解决办法
  3. Main-Accounts-and-Financial-Dimensions-Data-Model_thumb
  4. Python笔记-使用uiautomator2编写某APP注册机
  5. 拥抱ROS2系列:ROS2概述和实践入门(一)
  6. 小积累-生成固定位数的随机数
  7. ImportError: No module named ‘Tkinter‘
  8. 2.6.28内核的进程load_balance
  9. 浙江大学公共管理学院与阿里云计算有限公司达成合作 | 凌云时刻
  10. jupyter nootbook支持matlab语言
  11. iMX8 Android SDK 下载
  12. 记一次外接键盘win键失灵
  13. 计算机等级考试数据库三级模拟题7
  14. 软件工程:敏捷过程与极限编程
  15. vscode配置prettier格式化工具
  16. 数据结构——图的邻接表存储
  17. 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)
  18. CYJian的水题大赛[第二弹] U34202 JerryC Loves Driving
  19. fgo7.27服务器维护,命运冠位指定2020年7月13日活动维护公告
  20. 失联近116个小时:MH370客机谜题仍待解

热门文章

  1. 如何去处右下角任务栏闪动邮件图标小广告?WPS干的好事!
  2. (旋转体体积的计算)利用元素法简单解答空间几何体问题——高等数学
  3. Python:测试代码
  4. Software_C#_grammer_Deletegate--Strategy
  5. android 调用系统照相机拍照后保存到系统相册
  6. 【AlgorithmStar机器学习】AS机器学习库特征工程使用说明文档
  7. php 支付宝电脑支付宝,PHP语言学习之php 做支付宝电脑网站和app支付
  8. 恒大法拉第汽车FF的Logo赏析
  9. 自学本科计算机课程要多久,22岁完全0基础自考计算机本科是否现实?
  10. 【从0到1搭建LoRa物联网】6、国产LoRa终端ASR6505 I2C接口