并行计算之OpenMP简介

news2024/11/28 3:38:27

OpenMP环境安装 基于ubuntu20.04

sudo apt-get update
sudo apt-get install libomp-dev

OpenMP概述

  1. 面向多线程并行编码的编译指导语句,如
 #pragma omp parallel
 #pragma omp for
 #pragma omp sections
  1. 包含相应的函数接口库和runtime(运行时系统)
omp_get_thread_num() //获取当前线程的线程编号
omp_get_num_threads() //获取正在执行的并行部分的线程数,也就是要执行代码块的线程数
omp_set_num_threads() //设置将要用于将来并行执行的线程数
  1. 极大的简化多线程编码,支持Fortran,C和C++,从SMP实现开始,已经发布和发展了25年

OpenMP执行模式

OpenMP采用fork-join的执行模式。

程序开始的时候只存在一个Master Thread,当需要进行并行计算的时候,添加相应的编译指导语句,开启多线程,此时会派生出若干个分支线程来执行并行任务。当并行代码执行完成,添加相应的编译指导语句,子线程会合,并把控制流程交给单独的主线程。

在这里插入图片描述
整个过程,通过在需要并行执行的代码段添加OpenMP规范的编译指导语句来实现从主线程派生和销毁多个线程,并通过runtime系统或者OpenMP函数库的标准接口来控制线程的数量,调度,同步,互斥等。

OpenMP “Hello World”

代码实例

#include "omp.h"
#include <iostream>

int main()
{
    #pragma omp parallel
    {
        int id = omp_get_thread_num();
        std::cout << "Hello World id = " << id << std::endl;
    }
    return 0;
}

编译

g++ main.cpp -fopenmp

通过环境变量设置开启的线程数

export OMP_NUM_THREADS=4

运行

Hello World id = 0
Hello World id = 2
Hello World id = 1
Hello World id = 3

上述结果不确定,因为是多线程,这里为了好看截取了比较整齐的一次结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/976115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

21.SPI万能驱动

spi万能驱动&#xff1a;spidev.c文件 存放在内核/drivers/spi/spidev.c文件。 内核开放的通用版本的spi驱动。 内核集成spidev驱动模块&#xff0c;开机后会中的加载此模块。 支持修改多种spi通信参数。 两个数据类型 spidev_data结构体 fops中的函数结构都要用到&#xff…

C/C++ CMake编译工具轻度使用

目录 CMake编译工具 一、CMake概述 二、CMake的使用 2.1 注释 2.1.1 注释行 2.1.2 注释块 2.2 源文件 2.1.1 共处一室 2.1.2 VIP包房 2.3 私人定制 2.2.1 定义变量 2.2.2 指定使用的C标准 2.2.3 指定输出的路径 2.4 搜索文件 2.3.1 方式1 2.3.2 方式2 2.5 包含…

WebGL射击游戏的优化

myshmup.com 允许在浏览器中创建 shmup(射击)游戏,我们可以使用具有创意通用许可证的资源或上传自己的艺术作品和声音。 创建的游戏可以在网站上发布。 该平台不需要编码,游戏对象的配置是在用户界面的帮助下执行的,后端是使用Django框架开发的,编辑器 UI 用 Javascript …

Spring项目配置

1.创建项目 2.修改编码格式为UTF-8 3.检查或配置代码⾃动补全功能 4.检查或配置⾃动导包 5.检查或配置Maven&#xff0c;可以⽤国内仓库镜像 6.idea识别Maven项⽬&#xff1a;在Notifications视图中会提⽰Load Maven Project&#xff0c;点击即可。 7.开启热部署 a.确认 pom.x…

vue制作页面水印

1.新建一个js js的代码 let watermark {}let setWatermark (str) > {let id 1.23452384164.123412415if (document.getElementById(id) ! null) {document.body.removeChild(document.getElementById(id))}let can document.createElement(canvas)can.width 500can.he…

一文彻底吃透自动化测试框架所有知识

定义测试自动化 在任何行业中&#xff0c;自动化通常被解释为自动处理流程&#xff0c;而这些流程几乎不需要人工干预。在软件行业&#xff0c;测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试。用技术术语来说&#xff0c;测试自动化框架是一组定制…

css自学框架之图片灯箱展示

实现的功能是页面中的图片单击&#xff0c;在灯箱中显示&#xff0c;单击按钮上下切换&#xff0c;单击灯箱退出展示&#xff0c;效果如下GIF展示。 实现步骤还是老样子&#xff0c;三方面工作一是CSS、二是JavaSxcript&#xff0c;三是HTML&#xff0c;下面开始一步一步实现&…

助眠小程序源码系统搭建

一直比较热门的项目&#xff0c;这款系统支持流量主和会员体系的。 用抖音伴侣直播也不错&#xff0c;然后间接引流到自己的小程序&#xff0c;后期还可以卖项目等&#xff0c; 也适合拿来做流量矩阵小程序。也可以用来做其他的声音音乐类的项目 大致功能: 支持流量主支持会员…

运维Shell脚本小试牛刀(五):until循环|循环控制break|continue

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

Photoscan/Metashape 2.0.0中的地面激光扫描处理

在Metashape(原Photoscan)2.0.0, 结构化地面激光扫描和非结构化航空激光扫描都可以使用导入点云&#xff08;文件>导入>导入点云&#xff09;命令导入。导入时会保留所有点属性&#xff08;包括结构化信息&#xff09;。 本文讨论以下主题 如何将激光扫描数据导入项目&am…

高忆管理:六连板!我乐家居累计涨超77%,公司:存在估值较高风险

9月4日&#xff0c;家具板块继续活泼&#xff0c;同花顺家具板块涨幅达5.46%&#xff0c;顶固集创&#xff08;300749.SZ&#xff09;20CM涨停&#xff0c;美之高(834765)涨超12%&#xff0c;帝欧家居&#xff08;002798.SZ&#xff09;、亚振家居&#xff08;603389.SH&#x…

day04_基本数据类型丶变量丶基本数据类型转换

前置知识 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法 。不同的进制可以按照一定的规则进行转换。 进制的分类 十进制&#x…

sqlserver数据库链接mysql服务器访问数据

sqlserver数据库链接mysql服务器访问数据 关于SqlServer数据库怎么链接mysql数据库我一直不明白&#xff0c;今天项目碰到一个问题需要链接&#xff0c;我就研究了一下&#xff0c;然后就成功了&#xff0c;在这里记录一下。也欢迎朋友互相学习交流借鉴。 1.使用navicat打开S…

推荐6款普通人搞副业做自媒体AI工具

hi&#xff0c;同学们&#xff0c;我是赤辰&#xff0c;本期是赤辰第5篇AI工具类教程&#xff0c;文章底部准备了粉丝福利&#xff0c;看完可以领取&#xff01;身边越来越多的小伙伴靠自媒体实现财富自由了&#xff01;因此&#xff0c;推荐大家在工作之余或空闲时间从事自媒体…

windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

文章目录 通过端口号查看进程号netstat通过进程号定位应用程序tasklist 通过端口号查看进程号netstat 在Windows系统中&#xff0c;可以使用 netstat 命令来查看端口的占用情况。以下是具体的步骤&#xff1a; 打开命令提示符&#xff08;CMD&#xff09;&#xff1a;按WinR组…

听厂家聊聊:劳保鞋何时该报废?

在现代工业社会里&#xff0c;劳保鞋作为一种较为常见的劳保用品&#xff0c;被广泛用于各行各业。劳保鞋&#xff0c;也称安全鞋&#xff0c;是保护使用者脚部免受意外事故引起的伤害&#xff0c;可以对足部起到一定的防护作用。不管是防砸还是防静电&#xff0c;甚至是耐高温…

进程、线程与构造方法

进程、线程与构造方法 目录 一&#xff0e; 进程与线程1. 通俗解释2. 代码实现3. 线程生命周期&#xff08;图解&#xff09; 二&#xff0e; 构造方法 一&#xff0e; 进程与线程 1. 通俗解释 进程&#xff1a;就像电脑上运行的软件&#xff0c;例如QQ等。 线程&#xff1a;…

robot framework入门案例

Robot Framework是一个完全基于关键字测试驱动的框架&#xff1b; 关键字可以理解为一个能实现特定功能的对象&#xff08;如ssh连接、登录、新增配置等&#xff09; 有了关键字后&#xff0c;就可以通过关键字组合成案例&#xff1b; 所以入门案例只需要两个文件 &#xf…

AcWing 788. 逆序对的数量(归并排序)

基本思想 归并排序是用分治思想&#xff0c;分治模式在每一层上有三个步骤&#xff1a; &#xff08;1&#xff09;分解&#xff1a;将n个元素分解成n/2个元素的子序列。 &#xff08;2&#xff09;解决&#xff1a;用合并排序法对两个子序列递归排序。 &#xff08;3&…

护眼灯的色温是多少比较好?如何选择护眼台灯

色温是台灯的一个重要指标&#xff0c;它可以表示光线中包含颜色的成分&#xff0c;从理论上简单来讲&#xff0c;色温从低到高对应着光线从黑到红&#xff0c;再到黄、白&#xff0c;最后到蓝色光。色温也可以对应大众所熟悉的色调&#xff0c;色温越高&#xff0c;光线偏白色…