OpenMP简介和基本命令
标准并行模式执行代码的基本思想是,程序开始时只有一个主线程,程序中的串行部分都由主线程执行,并行的部分是通过派生其他线程来执行,但是如果并行部分没有结束时是不会执行串行部分的~
目的
The omp parallel directive explicitly instructs the compiler to parallelize the chosen block of code.
.-,------. V | >>-#--pragma--omp parallel for----clause-+-------------------------><
主要命令:
parallel,用在一个代码段之前,表示这段代码将被多个线程并行执行
for,用于for循环之前,将循环分配到多个线程中并行执行,必须保证每次循环之间无相关性。
parallel for, parallel 和 for语句的结合,也是用在一个for循环之前,表示for循环的代码将被多个线程并行执行。
子命令:
private, 指定每个线程都有它自己的变量私有副本。
firstprivate,指定每个线程都有它自己的变量私有副本,并且变量要被继承主线程中的初值。
lastprivate,主要是用来指定将线程中的私有变量的值在并行处理结束后复制回主线程中的对应变量。
reduce,用来指定一个或多个变量是私有的,并且在并行处理结束后这些变量要执行指定的运算。
nowait,忽略指定中暗含的等待
num_threads,指定线程的个数
default,用来指定并行处理区域内的变量的使用方式,缺省是shared
schedule,指定如何调度for循环迭代
schedule 可以传参数dynamic和static,
static调度意味着迭代块以循环方式静态/固定映射到执行线程。静态调度的好处在于,OpenMP 运行时如果保证您有两个具有相同迭代次数的独立循环并使用静态调度以相同数量的线程来执行它们,那么每个线程将会获得完全相同的迭代范围.
例子:
#pragma omp parallel for num_threads(FLAGS_thread_num) schedule(static)
for(size_t i=0;i<image_list.size();i++) {counter++;int thread_id=omp_get_thread_num();/**...................................**/
}
OpenMP简介和基本命令相关推荐
- [并行计算] 2. OpenMP简介
OpenMP简介 (这篇翻译只涉及与C/C++相关的代码和示例,忽略了与Fortran相关的代码和示例,感兴趣的读者可以参考原文) 1 摘要 OpenMP是由一组计算机硬件和软件供应商联合定义的应用程 ...
- Django简介与基本命令
Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T. 层次 功能 模型(Model),即数据存取层 数据处理及其相关事 ...
- git 修改仓库的描述_git简介、基本命令和仓库操作
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版 ...
- hbase查看表结构_HBase简介和基本命令
[162] 一.HBase简介 1.1什么是HBase HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用 HBASE 技 术可在廉价 PC Server 上搭建起大规模结构化存 ...
- 1.Redis简介与基本命令
Redis是一个高性能的key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorteds ...
- OpenMP并行编程计算π值及PSRS排序
一. OpenMP简介 OpenMP是一个共享存储并行系统上的应用程序接口.它规范了一系列的编译制导.运行库例程和环境变量. 它提供了C/C++和FORTRAN等的应用编程接口,已经应用到UNIX.W ...
- OpenCV算法加速(1)OpenMP/PPL/TTB基础知识
一.提高OpenCV的运算速度,有以下几种方法: 1.利用x86转为x64提速,可以提高1倍的速度 2.多线程的openmp或Intel TBB提速,将cpu的利用率从20%多提高到100% 3.利用 ...
- 并行编程——OpenMP
文章目录 并行机体系结构 并行机体系结构及通信机制 并行程序 设计方法 设计模型 openmp 基础 OpenMp简介 在VS中启用OpenMP OpenMp并行编程模型 OpenMp 存储模型 支持 ...
- OpenMP学习笔记
一.OpenMP简介 1. 内存共享并行模型. 机器必须多处理器/核,共享内存. 底层架构可以是UMA和NUMA. UMA NUMA 2. Fork-Join模型 重复fork-join操作. 3. ...
- openmp配置指南_openmp开发环境配置
语句绑定和嵌套规则.库函数和环境变量设置 12. OpenMP计算实例 13. OpenMP应用程序设计的性能分析 2013-8-18 3 6.9 OpenMP线程同步与线程数据语句 ?数据竞争问题. ...
最新文章
- sap linux下配置文件,Linux下配置sapjco3
- Hadoop 00_hadoop伪分布式,完全分布式,HA搭建
- 160 - 54 eKH
- 互联网日报 | 7月15日 星期四 | B站赠送所有用户1天大会员;饿了么投入3亿用于今夏骑手保障;小米智能工厂二期开工...
- python怎么导出程序_[272]如何把Python脚本导出为exe程序
- deepin 安装cuda 编译 ffmpeg
- oracle erp crm系统,企业集成ERP和CRM系统的模式体验
- 关于ArrayList转json
- Ubuntu下安装Chrome浏览器的方法
- 计算机我的云盘在哪里看,怎么设置在我的电脑中显示百度网盘
- 显示图片的html 页面,HTML基础——网站图片显示页面
- c语言的矩阵怎么编程,关于矩阵的编程
- 几何分布的期望与方差
- iOS微信网页长按图片问题解决
- 服务器系统不用关机,云服务器不用了要关机吗
- 大数据以及Hadoop相关概念介绍
- 【Java语言】请输入任意一个三位数,输出个位 , 十位 , 和百位,输入:123,输出:3,2,1
- C++ STL(八) -------- unordered_set、unordered_map的介绍+使用+比较
- 需求分析与系统设计 原书第3版
- windows10安装maven及环境变量配置
热门文章
- 大数据时代 集群NAS更给力
- 启用iptables后,连接速度很慢
- LOJ2424「NOIP2015」子串
- HDU6072 Logical Chain
- Apache的目录结构详细讲解
- oracle游标作为out参数,oracle 存储过程 带游标作为OUT参数输出
- python嵌套列表输出_Python列表的增删改查排嵌套特殊输出格式
- python按键退出循环_Python的for循环退出
- mysql命令语句连接数据库_MySQL_MySQL常用基本SQL语句总结,1. 常见命令连接本地数据库 - phpStudy...
- Delphi中WebBrowser(或者EmbeddedWebBrowser)控件打开部分网站报“Invalid floating point operation”异常的解决方法...