![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openmp学习篇章
主要针对openmp学习进行总结
li三河
图像算法、3D开发、深度学习
展开
-
(三) 同步和互斥
在多线程编程中必须考虑到不同的线程对同一个变量进行读写访问引起的数据竞争问题。如果线程间没有互斥机制,则不同线程对同一变量的访问顺序是不确定的,有可能导致错误的执行结果。OpenMP中有两种不同类型的线程同步机制,一种是互斥机制,一种是事件同步机制。互斥锁机制的设计思路是对一块共享的存储空间进行保护,保证任何时候最多只能有一个线程对这块存储空间进行访问,从而保证数据的完整性,这块存储空间称为“临界区”。可以通过critical、atomic等制导指令以及API中的互斥函数来实现。事件同步机制的设计思原创 2022-01-29 15:21:04 · 902 阅读 · 0 评论 -
(二) 任务调度
1、 schedule子句的用法schedule(type,size) type表示调度类型,共有4种类型(static,dynamic,guided,runtime)可选,size参数定义了迭代次数最小的划分单位,每个线程依次分配size个迭代次数。#include<iostream>#include"omp.h" using namespace std;void main(){#pragma omp parallel for schedule(static,3)for(原创 2022-01-29 15:13:18 · 1342 阅读 · 0 评论 -
(一) OpenMP介绍
OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++。OpenMP提供对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。进程是CPU资源分配的最小单位,线程是CPU调度的最小单位。线程是建立在进程的基础上的一次程序运行单位,进程是应用程序的执行实例。OpenMP采用fork-join的执行模式,开始的时候只存在一个主线程,当需要进行并行计算的时候,派生出若干个分支线程来执行并行任务。当并行代码执行完成之后,分支线程会合,并把控制流程交给单独的主线程。原创 2022-01-29 15:09:02 · 13078 阅读 · 2 评论