首页 > 其他分享 >OpenMP学习 第三章 什么是OpenMP

OpenMP学习 第三章 什么是OpenMP

时间:2024-01-14 11:44:27浏览次数:28  
标签:第三章 get list 学习 omp 线程 pragma OpenMP

第三章 什么是OpenMP


OpenMP是一个用于编写并行程序的应用编程接口.虽然它一开始专注于SMP计算机的多线程程序,但是经过多年的发展,它已经可以应对NUMA系统和GPU等外设.

构成OepnMP的核心编译指令,运行时库函数和字句:

OpenMP编译指令,函数或子句 概念
#pragma omp parallel 并行区域,线程组,结构化块和跨线程交错执行
int omp_get_thread_num()
int omp_get_num_threads()
void omp_set_num_threads()
SPMD模式:创建并行区域,使用线程数和线程ID分割工作
double omp_get_wtime() 代码的定时块,加速比和阿姆达尔定律
export OMP_NUM_THREADS=N 内部控制变量和用环境变量设置默认线程数
#pragma omp barrier
#pragma omp critical
交错执行,竞争条件和同步所隐含的操作
#pragma omp for
#pragma omp parallel for
共享工作,并行循环和循环携带依赖
reduction(op:list) 跨组内线程的值归约
schedule(static[.chunk])
schedule(dynamic)[.chunk]
循环调度,循环开销和负载平衡
private(list)
firstprivate(list)
shared(list)
OpenMP数据环境:默认规则和修改默认行为的子句
default(none) 每个变量的存储属性的强制显式定义
nowait 禁用共享工作构造的隐含栅栏,栅栏的高成本以及刷新内存
#pragma omp single 由单线程完成的工作
#pragma omp task
#pragma omp taskwait
任务,任务完成和用于任务的数据环境

OpenMP的主要组件:

  • 硬件层: 处理器,共享内存
  • 系统层: OpenMP运行时系统,支持共享内存和线程处理的OS
  • 程序层: 指令,编译器,OpenMP库,环境变量
  • 用户层: 应用,终端客户

标签:第三章,get,list,学习,omp,线程,pragma,OpenMP
From: https://www.cnblogs.com/mesonoxian/p/17963496

相关文章

  • 开始学习Java - Day1
    学习Java目标掌握一门编程语言可以看懂代码,具备编程能力。WhyJava(vspython)相比较Python,更原生态,更灵活。(Python只是上手简单,仅此而已)Java封装好了,调用是一样的学完Java,再学习其他语言,会更快一些。如PHP,Python具体解决问题,底层更多的是看算法学习方法写代码......
  • OpenMP学习 第二章 性能语言
    第二章性能语言性能分析编写并行程序的原因只有两个:用较少的时间解决一个固定大小的问题,或者用合理的时间解决一个较大的问题.无论上述哪种情况都是为了提高性能.OpenMP是一种用于编写并行程序设计的编程语言.在某种层面上,它总是要回到性能上.性能的原始评判标准是以时......
  • 深度学习3D网格分割网络---MeshCNN
    MeshCNN是2019年提出的直接在3DMesh上进行分类和分割的网络,MeshCNN在3D网格上定义了定义了卷积和池化层,依据三维模型边的连通关系将其转换为一个图来研究。最终能够在来自SHREC11数据集的30个类上达到98.6%的精度,并且在部件和人体数据集上有很好的分割性能。论文主页:https://ra......
  • 【公开课-微软RPA】12月23日,RPA 学习天地成功举办基于微软RPA公开课,让更多人用上RPA,用
    12月23日,RPA学习天地成功举办了,基于微软RPA工具(PowerAutomateDesktop)直播公开课,成功地帮助学员们初步了解了微软RPA工具的功能。本次公开课,主要介绍了如何使用微软的RPA工具来实现Boss直聘岗位薪资自动爬取的场   首先:通过查询岗位相关信息并保存到本地,然后进行数据筛......
  • 深度学习需要float64精度吗,商用NVIDIA显卡的float64性能是否多余呢
    首先要知道这么几个事实,也是交代一下本文要讨论的问题的背景:各大深度学习框架均支持float64类型的简单运算,但是均不支持float64的深度学习的运算操作;作为深度学习运行的加速设备,各种GPU、TPU、NPU的各种XPU均以其卓越的float64精度计算能力作为宣传,如NVIDIA公司的显卡,其商用版......
  • 【scikit-learn基础】--『监督学习』之 均值聚类
    聚类算法属于无监督学习,其中最常见的是均值聚类,scikit-learn中,有两种常用的均值聚类算法:一种是有名的K-means(也就是K-均值)聚类算法,这个算法几乎是学习聚类必会提到的算法;另一个是均值偏移聚类,它与K-means各有千秋,只是针对的应用场景不太一样,但是知名度远不如K-Means。本篇介绍如......
  • 多线程(Java.Thread)学习
    多线程(Java.Thread)学习线程简介:1、线程是独立执行的路径2、程序运行时有很多后台进程比如主线程、young.gc、full.gc()3、main是主线程,系统入口,用于执行整个程序4、一个进程中、如果开辟多个线程,线程的运行由调度器安排调度、调度器的先后顺序不能人为干预5、对同一份资......
  • 1/13 学习进度笔记
    今日安装了PySpark库以及学习了如何在Windows系统中通过SSH远程连接Linux系统使用Python语言来开发Spark程序什么是PySpark 我们前面使用过bin/pyspark程序,要注意,这个只是一个应用程序,提供一个Python解释器执行环境来运行Spark任务我们现在说的PySpark,指的是Python的......
  • 1.13学习进度
       初始化DAGScheduler和TaskScheduler调度器,SparkDeploySchedulerBackend,以及在其内部启动DriverEndpoint和ClientEndpoint。   其中:       ClientEndpoint:用于向Master注册应用程序       DriverEndpoint:用于发送任务给work中的executor     ......
  • C++ 学习宝藏网站分享
    C++学习宝藏网站分享1.C++在线参考手册Cppreferencehttps://zh.cppreference.comC++开发者必备的在线参考手册,是我最常访问的C++网站之一。作为参考手册,不仅包含了语言本身的词法、语法特性,还包含了对C++标准库的介绍:需要include哪个头文件、接口参数/返回值说明......