OpenMP 分发中的 SECTIONS 指令如何工作?

2023-12-28

在OpenMP中使用时omp sections,线程是否会被分配到内部的块中sections,或者将每个线程分配给每个部分?

When nthreads == 3:

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}

Output:

id=1
id=1

但是当我执行以下代码时:

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}

Output:

id=1
id=1

id=2
id=2

从这些输出中我无法理解 OpenMP 中节的概念。


OP发布的代码永远不会并行执行,因为parallel没有出现关键字。 OP 的 id 不同于 0 的事实表明他的代码可能嵌入在并行指令中。然而,他的帖子并不清楚这一点,可能会让初学者感到困惑。

最小合理的示例是(对于OP发布的第一个示例):

#pragma omp parallel sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}

在我的机器上,这打印

id = 0,
id = 1,

显示这两个部分正在由不同的线程执行。

值得注意的是,但是此代码无法提取比两个线程更多的并行性:如果使用更多线程执行它,则其他线程没有任何工作要做,只会闲置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenMP 分发中的 SECTIONS 指令如何工作? 的相关文章

  • 加速位图灰度转换,OpenMP 是 C# 中的一个选项吗?

    请帮助我使用 openmp 使此代码并行 此代码在单击按钮时运行 文本框为 128 using System using System Collections Generic using System ComponentModel usin
  • 随机密码生成器上的 OpenMP 多线程

    我正在尝试使用集成到 Visual Studio 2010 中的 OpenMP 多线程来制作快速密码生成器 假设我有一个基本的字符串生成器 它可以从字符串中随机提取字符 srand time 0 for i 0 i lt length i
  • 单/多线程(OpenMP)模式下计算精度的差异

    有人可以解释 理解单 多线程模式下计算结果的不同吗 这是一个大约的例子 圆周率的计算 include
  • OpenMP“master”编译指示不得包含在“parallel for”编译指示内

    为什么英特尔编译器不允许我指定 openmp 中的某些操作parallel for块应该仅由主线程执行吗 如果没有这种功能 我该如何实现我想要实现的目标 我想做的是通过并行回调更新进度条 long num items computed 0
  • 对“omp_get_max_threads_”的未定义引用

    我在尝试编译项目时遇到以下错误 fortran 使用 gfortran 对 omp get max threads 的未定义引用 对 omp get thread num 的未定义引用 问题是 我的 GCC 版本是 4 4 3 它应该支持
  • OpenMP 和 C++11 多线程

    我目前正在从事一个混合高性能计算 HPC 和交互性的项目 因此 HPC 部分依赖于 OpenMP 主要是具有大量相同计算的 for 循环 但它包含在具有 GUI 和多线程的更大框架中 目前通过 c 11 线程实现 std thread an
  • g++:错误:libgomp.spec:没有这样的文件或目录

    我使用 g GCC 4 7 2 在 Windows 7 64 位版本上 下载自http nuwen net mingw html http nuwen net mingw html 我尝试使用 fopenmp 标志并收到错误 g 错误 li
  • Xcode C++ omp.h 文件未找到

    我正在尝试将 openmp 包含到我的 Xcode C 项目中 我已将 Xcode 中的编译器更改为 LLVM GCC 4 2 添加 fopenmp 作为 CFlag 并在 xcode 中启用了 OpenMP 支持 但它仍然显示 omp h
  • OpenMP 中使用循环的并行部分

    我想知道是否有任何技术可以使用 for 循环在 OpenMp 中创建并行部分 例如 我不想创建 n 个不同的 pragma omp 部分 而是使用 n 次迭代来创建它们for loop每个部分都有一些变化的参数 pragma omp par
  • OpenMp 根据变量设置并行循环的线程数

    有没有办法根据变量的值设置 OpenMP 并行区域的线程数 最初 整个应用程序的线程数 nofCores 在我的 AMD FX 8350 上 nofCores 8 对于这个区域 如果变量是 3 那么我只需要 3 个线程 如果变量 gt 核心
  • 是否可以将 OpenMP 库与 Android NDK 一起使用?

    是否可以将 OpenMP 库与 Android NDK 一起使用 也许有人已经尝试将它们编译在一起并可以提供一些提示 随着双核平板电脑 智能手机的出现 我认为在应用程序开发中使用 OpenMP 功能会非常好 先感谢您 对于现在遇到这个问题的
  • OpenMP 为内联函数声明 SIMD

    The 当前的 OpenMP 标准 http www openmp org mp documents openmp 4 5 pdf subsection 2 8 2说关于declare simdC C 指令 在函数上使用声明 simd 构造
  • 在 Mac OS 上使用 OpenMP 和 C++11

    我正在尝试在我的 C 11 代码中使用一些 OpenMP 多线程功能 例如 pragma omp parallel for 当我尝试使用以下命令进行编译时 clang std c 11 stdlib libc fopenmp main cp
  • OMP_NUM_THREADS=1 时 #pragma ompatomic 的性能问题

    我观察到我正在编写的 openmp 代码出现了意外的 对我来说 行为 代码结构如下 pragma omp parallel for for int i 0 i
  • 并行迭代器

    我正在设计一个 C 数据结构 用于图形 供并行代码 使用 OpenMP 使用 假设我想要一个能够迭代所有元素 节点 的方法 当然 这个迭代将是并行的 是否可以使用迭代器来实现此目的 迭代器应该是什么样子才能实现并行访问 在这种情况下 您会建
  • 使用 OpenMP 时无用的 printf 没有加速

    我刚刚编写了第一个 OpenMP 程序 它并行化了一个简单的 for 循环 我在双核机器上运行代码 发现从 1 个线程变为 2 个线程时速度有所提高 然而 我在学校 Linux 服务器上运行相同的代码并没有看到加速 在尝试了不同的事情之后
  • OpenMP:无法并行化嵌套 for 循环

    我想将循环与其中的内循环并行化 我的代码如下所示 pragma omp parallel for private jb ib shared n Nb lb lastBlock jj W WT schedule dynamic private
  • OpenMP 共享与第一私有性能比较

    我有一个 pragma omp parallel for在类方法内循环 每个线程只读访问很少的方法局部变量 很少调用私有数据和方法的参数 所有这些都在一个声明中声明shared条款 我的问题 性能方面不应该有任何区别声明这些 变量share
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 为每个 mpi 进程分配不同数量的 openmp 线程

    假设我有一个在 384 个 MPI 进程 24 个计算节点 每个计算节点有 16 个核心 上运行的代码 并使用以下简单脚本将我的作业提交到作业队列 bin bash PBS S bin bash PBS l nodes 24 ppn 16

随机推荐

  • 创建 JSON 时,vividsolutions JTS 中的几何图形失败

    朋友们 我在应用程序中使用vividsolutions 的库JTS 1 13 来处理点和多边形 但是当我尝试将几何对象转换为JSON 时 我的应用程序失败了 这是我的来源 RequestMapping value test point me
  • 在 django 1.10 中将 trigram 与排名搜索相结合

    我们在 django 1 10 中进行搜索 我们需要使用三元组搜索进行用户排名搜索 我们的代码是这样的 def get queryset self search self request GET get text vector Search
  • django中的模板如何获取用户对象?

    模板如何获取用户对象 换句话说 渲染过程中究竟是什么过程将用户对象传递给模板 模板中还可以访问哪些内容 使用django contrib auth context processors auth https docs djangoproje
  • iOS 14 中的锁定屏幕方向

    我正在更新旧的 iPad 应用程序 但我无法阻止 iOS 旋转只能以纵向模式查看的控制器 该应用程序有一个UISplitViewController 但在某一时刻 我需要以纵向模式全屏显示另一个控制器 无论 iPad 之前是纵向还是横向 我
  • 从 python 脚本创建可执行文件

    我使用 python 和 wxpython 创建了一个 GUI 程序 现在可以将其转换为可执行文件 在过去的两天里 我按照 py2exe 的各种说明进行了尝试 命令提示符的所有说明均参考旧版本的 Windows 而我使用的是 Windows
  • 在 Bash 中将文本文件作为命令运行

    如果我有一个文本文件 每行都有一个单独的命令 我如何使终端将每一行作为命令运行 我只是不想一次复制并粘贴一行 它不一定是文本文件 它可以是任何类型的有效文件 example txt sudo command 1 sudo command 2
  • 并行视觉工作室解决方案构建

    我知道 msbuild 能够使用多个核心 see here http www hanselman com blog HackParallelMSBuildsFromWithinTheVisualStudioIDE aspx 但是 VS201
  • Typescript:将相似对象的联合转换为对象类型

    如何使用 TypeScript 类型将相似对象的联合转换为对象类型 Input type I key foo value Foo key bar value Bar Output type O foo Foo bar Bar 我不确定这是否
  • 应用程序传输安全策略要求使用安全连接

    我添加了NsAppTransportSecurity作为字典并添加了键NsAllowArbitaryLoads正如每个人所说 但它对我不起作用 我对项目进行了彻底的重建 但仍然出现同样的错误 应该这样做 NSAppTransportSecu
  • 如何将一个 amp-story-page 链接到另一个页面?

    所以 我目前正在使用 AMP amp story 来制作故事 我想知道如何放置一个从一个页面切换到另一页面的按钮 例如 使您从第 5 页转到第 8 页 而不是第 6 页 的按钮 目的是允许用户跳过一些内容 amp story 是否也允许隐藏
  • 为什么 tailwind 中只生成一些 css 类?

    我有一个项目 我使用 Django 作为 css 的后端和尾风 tailwind 没有给我任何错误 并且在我的文件中查找类 但不生成 css 它唯一适用的类是 bg blue 500 仅此而已 如果有人能想到为什么会发生这种情况或如何解决
  • DoubleAnimation.Completed 事件在情节提要结束时触发

    所以我有一个Storyboard它将依次运行多个动画 并非所有动画同时运行 并且在其中一些动画中我订阅了DoubleAnimation Completed事件 动画运行得很好 但是Completed动画的事件仅在整个事件触发一次Storyb
  • Tensorflow:将导入的图形操作应用于 2d 张量的每个元素

    有些问题回答了我的部分问题 但我无法将这些部分连接在一起 假设我有一个对仅包含 2 个元素的一维数组进行操作的图 input tf placeholder tf float32 2 name input 我想构建一个图表 它可以接收此类元素
  • 如何在不迁移的情况下将 Django 连接到外部数据库

    我想将我的 DjangoApp 连接到外部 MySQL 数据库 我不想迁移到这个表 我的意思是我不想创建新表 只是提取数据 我的问题是 如何做到这一点 如果我将此表添加到我的设置文件中的数据库 那么控制台会显示有关强制迁移的错误 你能给我推
  • 为什么 AWS Cognito 对 JWT 使用多个公钥?

    当我下载特定用户池的 JWT 集时 可在以下位置获取 https cognito idp https cognito idp region amazonaws com userPoolId well known jwks json JSON
  • 使用来自 python 2.4 的输入重定向运行 shell 命令?

    我想要实现的是启动以下 shell 命令 mysql h hostAddress u userName p userPassword databaseName lt fileName 在 python 2 4 脚本中 有一些类似的内容 cm
  • ASP.NET 全球化:Culture="auto" 页面指令导致中性文化崩溃?

    我遇到了使用内置全球化工具的 ASP NET 应用程序崩溃的情况 在具有 Culture auto 指令的 ASP NET 页面上 使用中性文化作为浏览器语言 例如 zh Hans 的用户将产生以下异常 文化 zh Hans 是一种中立文化
  • Scrapy hxs.select() 未选择所有结果

    我正在尝试通过scrapy来获取赔率here http www paddypower com football football matches premier league 目前只是尝试使用以下蜘蛛记录结果 def parse self
  • 复合 JS 关系访问

    我定义了 2 个模式对象 如下所示 用于 mongodb var User describe User function property name String property email String property passwor
  • OpenMP 分发中的 SECTIONS 指令如何工作?

    在OpenMP中使用时omp sections 线程是否会被分配到内部的块中sections 或者将每个线程分配给每个部分 When nthreads 3 pragma omp sections pragma omp section pri