OpenMP的所有编译制导指令是以#pragma omp开始

#pragmaomp指令 [子句[,子句]„]

版本为2.5的OpenMP规范中的指令有以下这些:

parallel:用在一个结构块之前,表示这段代码将被多个线程并行执行;

for:用于for循环语句之前,表示将循环计算任务分配到多个线程中并行执行,以实现任务分担,必须由编程人员自己保证每次循环之间无数据相关性;

parallelfor:parallel 和 for指令的结合,也是用在for循环语句之前,表示for循环体的代码将被多个线程并行执行,它同时具有并行域的产生和任务分担两个功能;

sections:用在可被并行执行的代码段之前,用于实现多个结构块语句的任务分担,可并行执行的代码段各自用section指令标出(注意区分sections和section);

parallelsections:parallel和sections两个语句的结合,类似于parallel for;

single:用在并行域内,表示一段只被单个线程执行的代码;

critical:用在一段代码临界区之前,保证每次只有一个OpenMP线程进入;

flush:保证各个OpenMP线程的数据影像的一致性;

barrier:用于并行域内代码的线程同步,线程执行到barrier时要停下等待,直到所有线程都执行到barrier时才继续往下执行;

atomic:用于指定一个数据操作需要原子性地完成;

master:用于指定一段代码由主线程执行;

threadprivate:用于指定一个或多个变量是线程专用,后面会解释线程专有和私有的区别。

相应的OpenMP的子句有以下一些:

private:指定一个或多个变量在每个线程中都有它自己的私有副本;

firstprivate:指定一个或多个变量在每个线程都有它自己的私有副本,并且私有变量要在进入并行域或任务分担域时,继承主线程中的同名变量的值作为初值;

lastprivate:是用来指定将线程中的一个或多个私有变量的值在并行处理结束后复制到主线程中的同名变量中,负责拷贝的线程是for或sections任务分担中的最后一个线程;

reduction:用来指定一个或多个变量是私有的,并且在并行处理结束后这些变量要执行指定的归约运算,并将结果返回给主线程同名变量;

nowait:指出并发线程可以忽略其他制导指令暗含的路障同步;

num_threads:指定并行域内的线程的数目;

schedule:指定for任务分担中的任务分配调度类型;

shared:指定一个或多个变量为多个线程间的共享变量;

ordered:用来指定for任务分担域内指定代码段需要按照串行循环次序执行;

copyprivate:配合single指令,将指定线程的专有变量广播到并行域内其他线程的同名变量中;

copyin:用来指定一个threadprivate类型的变量需要用主线程同名变量进行初始化;

default:用来指定并行域内的变量的使用方式,缺省是shared。

版本为2.5的OpenMP规范中的编译制导指令汇总相关推荐

  1. 一个维护版本日志整洁的Git提交规范

    1 关于提交日志规范 良好的Commit Message有利于代码审查,能更快速查找变更记录,并且可以直接生成Change log. Commit Message的写法规范:conventional- ...

  2. missing port in specification: tcp:192.168.1.20[ADB:规范中缺少端口]

    ADB:规范中缺少端口 我最近升级到 Android SDK Platform-Tools 版本 28.0.2.版本信息: adb version Android Debug Bridge versi ...

  3. MANIFEST.INF!JAR规范中

    MANIFEST.INF!JAR规范中 META-INF 目录中内容心得.顺带整理了网上资料,提供地址 标签: jarjava产品sunantapache 2012-03-31 17:09 2768人 ...

  4. gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系

    在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系.同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题.Building Andro ...

  5. OpenMP在ARM-Linux以及NDK中的编译和使用

    OpenMP在ARM-Linux以及NDK中的编译和使用 参考:http://blog.sina.com.cn/s/blog_602f87700102w1ki.html 以前对OpenCV在ARM-L ...

  6. 【译】 WebSocket 协议第十二章——使用其他规范中的WebSocket协议

    概述 本文为 WebSocket 协议的第十二章,本文翻译的主要内容为如何使用其他规范中的 WebSocket 协议. 使用其他规范中的WebSocket协议(协议正文) WebSocket协议旨在由 ...

  7. ECMAScript 2015(ES6)规范中的promise

    ECMAScript 2015(ES6)规范中的promise – 转 概述 Promise 对象用于延迟(deferred) 计算和异步(asynchronous ) 计算..一个Promise对象 ...

  8. 从 ES 规范 中理解 this

    从 ES 规范 中理解 this 本以为对 JS 中的 this 已经很熟练了,再看完冴羽的博客后,才发现自己对 ES 规范知之甚少,原来我都是根据经验在判断 this,这篇文章会从最底层的 ES 规 ...

  9. linux中不同版本的gcc切换,Ubuntu 14.04中升级gcc到版本4.9.2并切换使用它们

    昨天刚全新在虚拟机上安装了Ubuntu 14.04,在其中安装的gcc版本是4.8.4.而我需要编译C++程序,在安装之后,我立刻就通过命令: sudo apt-get install build-e ...

最新文章

  1. 自定义非等高 Cell
  2. 微信小程序实战之百思不得姐精简版
  3. 递归回溯最简单易懂的小例子
  4. python自动化数据报告_如何:使用Python将实时数据自动化到您的网站
  5. 网络对抗技术—-网络对抗实验四
  6. python将数据变成float32,Python:将numpy默认为float32
  7. python I/O 对象
  8. Structured Streaming + Kafka测试
  9. Git版本管理工具Tower for Mac
  10. golang GUI编程之walk初建
  11. 51单片机课程设计—温度报警系统(包含实验报告,仿真图)
  12. 【Tools】TCP/IP 测试工具——SocketTools
  13. MySQL+Navicat安装教程
  14. python词云图_Python快速生成词云图,这是最详细的教程,没有之一!
  15. 微PE制作U盘启动盘步骤
  16. 上海证券交易所云平台移动行情服务测试项目
  17. 在计算机内 信息的表现形式是什么,信息的表现形式_现代信息的形式表现为哪四种形态...
  18. html5 调用系统相册,iOS之H5调用系统相册相机浏览文件
  19. html语言的title在哪,网页中title标题使用地方有哪些
  20. python绘制蟒蛇_Python基本图形绘制——蟒蛇绘制

热门文章

  1. leetcode题解70-爬楼梯
  2. .netframewor划时代的系统:纪念Vista发布5周年
  3. linux基础-01-用户和目录、vim、归档和解压、系统启动流程、加密
  4. MongoDB3.xxx 用户创建
  5. 软件测试人员必备的linux命令
  6. CentOS Linux解决Device eth0 does not seem to be present【转】
  7. 使用Facelets开发JSF程序
  8. 以FORWARD为例,分步骤演示Filter对转发请求的拦截效果
  9. viewpager fragment FragmentStatePagerAdapter数据删除后更新界面
  10. php mysql安装_搭建PHP环境中的MySQL配置