OpenMP 中归约运算的执行顺序

2024-01-09

有没有办法知道 OpenMP 中归约运算符的执行顺序?换句话说,我想知道线程如何执行归约操作——是从左到右吗?当存在不是 2 的幂的数字时会发生什么?


我想你会发现 OpenMP 只会减少关联操作,例如+ and *(如果您愿意,也可以是加法和乘法),这意味着它可以忽略跨线程的约简表达式的组成部分的求值顺序。

我强烈建议您在使用 OpenMP 时以相同的方式进行操作,尝试找出或限制执行顺序,最好的情况是将并行程序变成顺序程序,最坏的情况是继续为您提供有效的随机结果。

我无法理解你关于非 2 的幂的数字的最后一句话。

正如@JimCownie 所指出的,诸如+ and *与浮点数不严格关联。解释我的参考关联运算第一句话的意思是当应用于实数时,这些运算是结合的,但是,由于现代计算机上数值计算的熟练从业者充分理解的原因,当应用于浮点数时,这些运算无法结合.

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

OpenMP 中归约运算的执行顺序 的相关文章

  • 为什么我的 OpenMP 实现比单线程实现慢?

    我正在学习 OpenMP 并发性 并尝试了一些现有的代码 在此代码中 我尝试使所有 for 循环并行 然而 这似乎使程序慢得多 至少慢 10 倍 甚至比单线程版本慢得多 这是代码 http pastebin com zyLzuWU2 htt
  • 使用OpenMP计算PI值

    我正在尝试通过并行化蒙特卡罗代码来学习如何使用 OpenMP 该代码通过给定的迭代次数计算 PI 的值 代码的核心内容是这样的 int chunk CHUNKSIZE count 0 pragma omp parallel shared c
  • OpenMP“master”编译指示不得包含在“parallel for”编译指示内

    为什么英特尔编译器不允许我指定 openmp 中的某些操作parallel for块应该仅由主线程执行吗 如果没有这种功能 我该如何实现我想要实现的目标 我想做的是通过并行回调更新进度条 long num items computed 0
  • 为什么 OpenMP 缩减子句对于静态调度循环是不确定的?

    我一直在从事一个多 GPU 项目 在该项目中我在获得非确定性结果方面遇到了问题 当我发现由于 CPU 上执行的归约子句而获得非确定性结果时 我感到很惊讶 在书里使用 OpenMP 下一步据说 线程组合其值来构建的顺序 共享结果的价值是不确定
  • 如何正确生成/恢复 OpenMP 未绑定任务?

    我编写了一个小型 C 程序来评估 OpenMP 在任务出现空闲时间 例如等待通信数据 时让出另一个任务的能力 include
  • OpenMP 如何重用线程

    我认为线程的创建和删除可能代价高昂 OpenMP 是否尝试重用现有线程 例如 pragma omp parallel sections num threads 4 pragma omp section worker A pragma omp
  • 最多不能超过 50%。矩阵乘法的理论性能

    Problem 我正在学习 HPC 和代码优化 我尝试复制 Goto 的开创性矩阵乘法论文中的结果 http www cs utexas edu users pingali CS378 2008sp papers gotoPaper pdf
  • C++11 随机数生成器的线程安全

    C 11 中有许多新的随机数生成器引擎和分布函数 它们线程安全吗 如果您在多个线程之间共享单个随机分布和引擎 是否安全并且您仍然会收到随机数吗 我正在寻找的场景是这样的 void foo std mt19937 64 engine stat
  • 如何判断 OpenMP 在我的 C++ 程序中是否有效

    我正在使用 OpenMP 对嵌套循环进行多线程处理 由于对这个东西不熟悉 我不确定我是否以正确的方式使用 OpenMP 以便它实际上可以进行并行编程 所以我想知道我是否可以测量使用 OpenMP 的 C 程序的性能 以便我可以知道它确实有效
  • OpenMP 通过三重 for 循环并行化矩阵乘法(性能问题)

    我正在使用 OpenMP 编写一个矩阵乘法程序 为了缓存方便 实现乘法 A x B 转置 行 X 行而不是经典的 A x B 行 x 列 以获得更好的缓存效率 这样做时 我遇到了一个有趣的事实 对我来说这是不合逻辑的 如果在这段代码中我并行
  • 顺序和并行版本给出不同的结果 - 为什么?

    我有一个嵌套循环 L 和 A 是完全定义的输入 pragma omp parallel for schedule guided shared L A reduction dummy for i k 1 i
  • 不确定 openmp 循环中应该共享或私有什么

    我有一个更新矩阵 A 的循环 我想将其设为 openmp 但我不确定哪些变量应该共享和私有 我本以为只有 ii 和 jj 就可以工作 但事实并非如此 我想我也需要在某个地方进行 OMP ATOMIC UPDATE 该循环仅计算 N 和 N
  • 测量 OpenMP Fork/Join 延迟

    由于 MPI 3 具有共享内存并行功能 并且它似乎与我的应用程序完美匹配 因此我正在认真考虑将我的混合 OpemMP MPI 代码重写为纯 MPI 实现 为了给棺材里钉上最后一颗钉子 我决定运行一个小程序来测试 OpenMP fork jo
  • 使用 openmp 优化 N-queen

    我正在学习 OPENMP 并编写以下代码来解决 n 皇后问题 Full Code https github com Shafaet Codes blob master OPENMP Parallel 20N Queen 20problem
  • 基于任务的编程:#pragma omp task 与 #pragma omp parallel for

    考虑到 void saxpy worksharing float x float y float a int N pragma omp parallel for for int i 0 i lt N i y i y i a x i And
  • OpenMP 动态调度与引导调度

    我正在研究 OpenMP 的调度 特别是不同的类型 我了解每种类型的一般行为 但澄清一下何时进行选择会很有帮助dynamic and guided调度 英特尔的文档 https software intel com en us articl
  • 垂直和水平平行度

    最近在并行领域工作 我了解到有两个术语 垂直并行 和 水平并行 有人说openmp 共享内存并行 是垂直并行 而mpi 分布式内存并行 是水平并行 为什么这些术语这么称呼 我不明白原因 这么称呼它们只是术语吗 这些术语似乎没有被广泛使用 也
  • 使用 OpenMP 编译会导致内存泄漏

    根据 valgrind 的说法 使用 OpenMP 编译简单的 hello world 程序时可能会导致内存泄漏 这是没有意义的 因为 hello world 程序并没有有意使用任何 OpenMP 功能 假设下面的程序名为hi c并根据 g
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • OpenMP:无法并行化嵌套 for 循环

    我想将循环与其中的内循环并行化 我的代码如下所示 pragma omp parallel for private jb ib shared n Nb lb lastBlock jj W WT schedule dynamic private

随机推荐

  • 将 nlp.pipe() 与 spaCy 的预分段和预标记化文本结合使用

    我正在尝试标记和解析已经分成句子并且已经被标记化的文本 举个例子 sents I like cookies Do you 处理批量文本的最快方法是 pipe 但是 我不清楚如何将其与预标记和预分段的文本一起使用 性能是这里的关键 我尝试了以
  • scp(安全复制)到 ec2 实例,无需密码

    我有一个正在运行的 EC2 实例 FreeBSD 9 AMI ami 8cce3fe5 我可以使用我的亚马逊创建的密钥文件 ssh 进入它 而无需密码提示 没有问题 但是 当我想使用 scp 将文件复制到实例时 系统会要求我输入密码 scp
  • 使用 Linq 检查列表中的字符串是否包含特定字符串

    我有一个List
  • 如何在 tf.data.Dataset.map 中使用预训练的 keras 模型进行推理?

    我有一个预先训练的模型 我正在尝试构建另一个模型 该模型将前一个模型的输出作为输入 我不想端到端地训练模型 只想使用第一个模型进行推理 第一个模型的训练使用tf data Dataset管道 我的第一个倾向是将模型集成为另一个dataset
  • 使用 itextsharp 创建带有文本图像(不是 pdf)的条形码

    我可以使用 itextsharp CreateDrawingImage 方法创建条形码 但我想将实际文本包含到图像中 我怎么做 或如何使用 CreateImageWithBarcode 方法保存为图像 Jpeg Png Thanks 面对同
  • 如何避免 pyspark 表达式中出现多个窗口函数

    我希望 Spark 避免为代码中使用两次的同一个窗口对象创建两个单独的窗口阶段 如何在下面的示例中在我的代码中使用它一次 并告诉spark在单个窗口下进行求和和除法 df df withColumn colum c f sum f col
  • 带轮询器的 Spring Integration Bridge 无法按 JMS 的预期工作

    使用 spring integration 5 0 7 来限制两个 JMS 队列之间的消息桥接 文档位于 https docs spring io spring integration docs 5 0 7 RELEASE referenc
  • 更新智能表中的单元格

    我正在尝试使用 PHP 更新现有 SmartSheet 工作表中的一些单元格 添加新行没有问题 但我无法获取正确的 JSON 进行更新 我此时的代码 ch curl init https api smartsheet com 1 1 she
  • 适用于 ASP.NET 的恶意爬虫拦截器

    我刚刚偶然发现不良行为 http www bad behavior ioerror us 一个 PHP 插件 承诺通过阻止垃圾邮件和恶意爬虫访问该网站来检测它们 ASP NET 和 ASP NET MVC 是否存在类似的东西 我感兴趣的是完
  • 将 15 分钟数据重新采样为 1 分钟而不进行聚合

    我附上了基于季度的数据框的示例 我希望将其重新采样为每分钟而不进行任何聚合 输入数据框 Date CET Price 2020 01 01 11 00 50 2020 01 01 11 15 60 2020 01 01 11 15 100
  • ggplot:手动添加未映射的美观图例

    我想生成一个覆盖有点的条形图 其中两者都有单独的图例 另外 我想使用外部参数选择条形的颜色和点的大小aes 由于两者均未映射 因此不会生成图例 1 如何手动添加填充和尺寸图例 library ggplot2 d lt data frame
  • 以编程方式显示工具提示

    我开发了一个 WPF 示例项目 这是主窗口的 XAML 标记
  • 使用数据驱动测试使用 Mstest 名称代替数据行

    我使用 MsTests 和数据驱动方法进行测试 Excel是测试数据存储 测试结果不提供有关测试数据的任何信息 例如 结果如下 测试名称 数据行 5 我不清楚 如何自定义输出测试结果 例如 testname 测试数据 单词 数字或行命名 我
  • macOS Sierra Spotlight 扩展

    不幸的是 我无法在网上找到有关此主题的任何最新信息 类似于这里提出的问题 OS X Yosemite Spotlight 扩展 https stackoverflow com q 25130549 4295410 是否可以by now to
  • 在 CSS 标签后使用 HTML 来实现悬停状态

    我目前正在尝试将一些 html 传递到 css 中的 after 伪类中 以在链接悬停后添加一个箭头 我很久以前就在默认安装的 WordPress 主题中看到过这种做法 我觉得我必须错过一些简单的东西 a hover after conte
  • jQuery - 检测“x”分钟内没有任何操作并针对该事件运行函数(X 分钟内没有事件)

    如何检测用户在 X 分钟内没有执行任何操作并在此事件上运行函数 E G if no action from user for X minutes do stuff 任何建议都非常感激 现场演示 http jsfiddle net lokta
  • H2 数据库中的当前时刻

    如何获取H2数据库中实际的当前时钟时间 当前时刻 The CURRENT TIMESTAMP http h2database com html functions html current timestamp函数给出当前数据库事务开始的时刻
  • 在 odoo 8 服务器“--auto-reload”工作时

    实际上是在启动odoo 8服务器的命令中 它将提供 auto reload 选项 但实际上我不知道它是如何工作的以及何时工作 请给我一些指导 通常 如果更改 python 代码 则需要重新启动服务器才能应用新的更改 auto reload
  • 在wpf数据网格中调整列大小

    我目前正在开发一个WPF软件 我正在使用 WPF 并尝试允许列自动调整大小以适应数据网格 我使用了columnwidth 只要窗口未包含在滚动视图中 它就可以正常工作 如果它处于滚动视图中 则列的大小调整得非常大 这会导致数据网格的大小调整
  • OpenMP 中归约运算的执行顺序

    有没有办法知道 OpenMP 中归约运算符的执行顺序 换句话说 我想知道线程如何执行归约操作 是从左到右吗 当存在不是 2 的幂的数字时会发生什么 我想你会发现 OpenMP 只会减少关联操作 例如 and 如果您愿意 也可以是加法和乘法