当前位置: 首页 > news >正文

(done) openMP学习 (Day10: Tasks 原语)

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#19-%E6%8A%80%E8%83%BD%E8%AE%AD%E7%BB%83%E9%93%BE%E8%A1%A8%E5%92%8Copenmp


本章节内容仅提供引入,关于 task 更详细的细节请看 openMP 手册或者源材料

Day9 介绍了一个优化链表遍历的粗糙方式,现在有一种更好的优化方式 (使用 Tasks),如下:

#pragma omp parallel
{#pragma omp single{node* p = head;while (p) {#pragma omp task firstprivate(p);process(p);p = p->next;}}
}

逐个解析:

  • #pragma omp single
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • #pragma omp task firstprivate(p)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

总的来说,task 创建一个并行任务,可以并行运行。


重新看下面的代码

#pragma omp parallel
{#pragma omp single{node* p = head;while (p) {#pragma omp task firstprivate(p);process(p);p = p->next;}}
}

总的来说,首先使用 #pragma omp single 只让一个线程运行,这个线程会循环更新 p 值,随后每次使用新的 p 值创建一个新的线程来运行 process(p) 函数。

下面这张图能很好的辅助解释
在这里插入图片描述


http://www.lryc.cn/news/534061.html

相关文章:

  • 力扣-字符串-28 找出字符串中第一个匹配项的下标
  • linux 基础知识点之工作队列workqueue
  • C++蓝桥杯基础篇(二)
  • 【Android—OpenCV实战】实现霍夫圆检测针对沙盘交通灯信号检测
  • WPS如何接入DeepSeek(通过JS宏调用)
  • 图论——环检测
  • Chapter2:C#基本数据类型
  • kafka服务端之控制器
  • Unity笔试常考
  • 移植BOA服务器到GEC2440开发板
  • WPS如何接入DeepSeek(通过第三方工具)
  • 【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统
  • Windows Docker笔记-制作、加载镜像
  • leetcode_26删除有序数组中的重复项
  • 速递丨DeepSeek刚刚成立香港子公司,或因考虑香港上市和招募全球AI人才
  • 笔灵ai写作技术浅析(六):智能改写与续写
  • 【在线优化】【有源程序】基于遗传算法(GA)和粒子群优化(PSO)算法的MPPT控制策略
  • 使用 Three.js 实现热力渐变效果
  • java-异常家族梳理(流程图)
  • 开启蓝耘之旅:DeepSeek R1 模型在智算平台的起步教程
  • [高等数学]不定积分的概念与性质
  • 【算法】【高精度】acwing算法基础 793. 高精度乘法
  • sqlite 查看表结构
  • 测试中的第一性原理:回归本质的质量思维革命
  • flink判断两个事件之间有没有超时(不使用CEP)
  • 二级C语言题解:十进制转其他进制、非素数求和、重复数统计
  • 打家劫舍3
  • 练习题(2025.2.9)
  • 【练习】PAT 乙 1074 宇宙无敌加法器
  • 网络防御高级02-综合实验