嵌套并行和折叠 for 循环之间有区别吗?

2023-12-14

我知道启用嵌套并行性将允许嵌套 omp 并行 for 循环也被并行化。但我在嵌套的 for 循环(for 内部)中使用塌陷(2)。

有区别吗?为什么或者为什么不?假设最好的情况:循环索引之间没有依赖性并且其他条件相同。


是的,有很大的区别 - 使用collapse (not collapsed)。不要使用嵌套并行性。

嵌套并行意味着有独立的线程团队在不同级别的工作共享上工作。您可能会遇到各种麻烦,要么过度订阅太多线程的 CPU 核心,要么不利用 CPU 核心,因为某些线程位于错误的团队中,目前没有工作。从嵌套并行性中获得良好的性能是相当困难的。这就是为什么您通常需要显式启用它。

另一方面,折叠循环意味着不同的循环在工作共享级别上是联合的。这使得一组线程(通常具有与可用 CPU 内核一样多的线程)能够有效地执行循环的不同迭代。

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

嵌套并行和折叠 for 循环之间有区别吗? 的相关文章

  • Python 多处理:全局对象未正确复制到子级

    前几天我回答了一个关于SO的问题 https stackoverflow com q 67047533 1925388关于并行读取 tar 文件 这是问题的要点 import bz2 import tarfile from multipro
  • PowerShell,使用 Start-Job 和 Start-Process 测试异步任务的性能/效率

    我很想测试 PowerShell 中异步任务的性能 有用性Start ThreadJob Start Job and Start Process 我有一个包含大约 100 个 zip 文件的文件夹 因此进行了以下测试 New Item 00
  • Foreach循环无法找到对象

    我正在尝试将 foreach 与并行后端结合使用来加速计算 用于特征选择的 AUCRF 随机森林的交叉验证 如果这确实重要的话 在这样做的过程中 我需要获取向量的子集 向量的名称可以更改 但可以作为字符向量进行访问 我使用 eval par
  • Python:并行修改数组的简单方法

    这个问题可能听起来很简单 但作为 Python 并行化的新手 我肯定会遇到困难 我处理了 OpenMP for C 中的并行化问题 这要容易得多 我需要做的是并行修改矩阵的条目 就是这样 问题是 我无法使用简单的 joblib 库来做到这一
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • 如何将二维数组作为 multiprocessing.Array 传递给 multiprocessing.Pool?

    我的目标是将父数组传递给mp Pool并填充它2s 同时将其分发到不同的进程 这适用于一维数组 import numpy as np import multiprocessing as mp import itertools def wor
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • Parallel.ForEach - 优雅取消

    关于等待任务完成和线程同步的主题 我目前有一个迭代 我已将其包含在 Parallel ForEach 中 在下面的示例中 我在评论中提出了一些关于如何最好地处理循环的优雅终止的问题 NET 4 0 private void myFuncti
  • 使用多处理和 PySftp 并行下载

    我正在尝试创建一个代码来使用 pysftp 和多处理库下载相同类型的 N 个文件 我做了一个基本的Python训练 得到了一些代码并将它们组合成一个 但我无法让它工作 如果有人帮助我 我将不胜感激 该错误发生在 vFtp close 命令之
  • C++ 并行任务的开销

    我有以下简单的功能 include
  • Haskell 五个独特的 Wordle 单词

    为了好玩 我正在尝试解决 Matt Parker 在他的 Haskell 频道 Standup Maths in Haskell 频道的链接视频中谈到的与 Wordle 相关的问题 基本上 找到 5 个没有任何共同字母的 5 个字母单词 因
  • C++并行排序

    我需要对存储在结构数组中的数据块进行排序 结构体没有指针 每个块都有其计数器编号以及数组中数据块与结构块相等的位置的坐标 例如 如果我们有一个数据数组 我们可以将其分为 4 个 NxN 块 那么在结构块的索引数组中我们有 4 个结构块 每个
  • 如何并行运行一组函数并等待完成结果?

    我需要同时异步运行一组繁重的函数并将结果填充到列表中 这是伪代码 List
  • C# 并行与并行线程代码性能

    我一直在测试 System Threading Parallel 与线程的性能 我很惊讶地发现并行比线程花费更长的时间来完成任务 我确信这是由于我对并行的了解有限 我刚刚开始阅读 我想我会分享一些片段 如果有人可以向我指出并行代码比线程代码
  • AsyncResponse 和 Java 8 并行流问题

    我正在使用 Spring BootJersey rest api POST Path test Produces MediaType APPLICATION JSON Consumes MediaType APPLICATION JSON
  • 如何处理 OpenMP 中的数据争用?

    我正在尝试使用 OpenMP 将数字添加到数组中 以下是我的代码 int input int malloc sizeof int snum int sum 0 int i for i 0 i
  • OpenMP 与浮点范围并行

    我有以下程序 int main double sum 0 pragma omp parallel for reduction sum for double x 0 x lt 10 x 0 1 sum x x 当我编译它时 我收到错误inva
  • .Net 中可用的并行技术

    我是 Net 平台的新手 我查了一下 发现 Net中有几种做并行计算的方法 任务并行库中的并行任务 即 Net 3 5 PLINQ Net 4 0 异步编程 Net 2 0 异步主要用于执行 I O 繁重的任务 F 有简洁的语法支持这一点
  • 2 个数组/图像相乘的多线程性能 - 英特尔 IPP

    我正在使用英特尔 IPP 来进行 2 个图像 数组 的乘法 我使用的是 Intel Composer 2015 Update 6 附带的 Intel IPP 8 2 我创建了一个简单的函数来乘以太大的图像 整个项目已附后 见下文 我想看看使
  • JavaScript 并行性

    好吧 首先我想说我在互联网开发领域还是个新手 无论如何 我想知道是否可以使用 javascript 并行运行两段代码 我真正需要的是调用远程服务器中的两个方法 我为两者传递了一个回调函数 该函数将在我想要的数据准备好后立即执行 由于运行这些

随机推荐

  • react-native启动报:Error: UNKNOWN: 未知错误,打开...\.babel.json

    我在Windows 7上有一个RN开发环境 它运行得很好 直到昨天我运行 react native start后突然报错 错误消息 2016 12 26 09 58 17 HMR Server listening on hot React
  • 在java中将文件重命名为另一个文件

    我有一个文件需要重命名为现有文件的名称 这是对现有 JAR 文件的复制 修改 替换原始操作 我已经完成了前两个步骤 我只需要更换原始位的帮助 将新版本的 JAR 重命名为旧版本的最佳方法是什么 旧 JAR 不需要保留 而且我不想保留新 JA
  • 在 Either 中指定 Case 对象的类型

    如果我有一个对象如下 case object Foo 我尝试创造这样的价值 Either Foo B 我收到编译错误 指出找不到 Foo 但如果我这样做 Either Foo type B 它编译 我的问题是这样做是否正确 每当你想声明一个
  • 如何根据执行程序/子安装程序的过程结果重新启动 Inno Setup 安装程序

    我有一个安装过程 如果未安装子 exe 则执行该安装过程 如果是这样 我想要最终的 启动我的应用程序 末尾的复选框将替换为 重新启动计算机 复选框 我怎样才能做到这一点 我尝试使用NeedRestart 并使用全局布尔变量 但我似乎无法让它
  • 如何创建没有 setter 函数的 getter 函数?

    我的脚本中有多个导出的变量 每当更改一个变量时 我想调用一个通用的 getter 并让值自动设置 tool export float var sample1 setget smthn changed export float var sam
  • 为什么 padding: 0 隐藏我的无序列表项目符号?

    我正在更新一个旧网站 其中有很多无序列表 每当 padding 设置为 0 时 无序列表的显示 标记 就会消失 问题是 CSS 设置 padding 0 margin 0 我现在正在删除它 每个克里斯 科伊尔的笔记 是 不再酷 为什么pad
  • 放大/缩小鼠标点?

    As seen in the pictures 我在 QScrollArea 中有 QWidget QWidget 充 当细胞图像和一些基于矢量的轮廓数据的渲染小部件 用户可以执行放大 缩小操作 简单地发生的是 它改变了 QPainters
  • “{Binding Path=.}”和“{Binding}”真的相等吗

    在我的 WPF 项目中 我有一个列表框 用于显示来自List
  • 无法移出 Rust 中借用的内容

    pub struct Character name String hp i32 level i32 xp i32 xp needed i32 gold i32 impl Character pub fn new name String gt
  • 使用 Azure Powershell 或 Azure CLI 创建 Log Analytics 警报

    我正在尝试在 azure 门户的 LogAnlytics 中创建警报 需要为 5 个数据库创建 6 个警报 因此必须手动创建 30 个警报 并且非常耗时 因此需要一种自动化方法 尝试通过创建使用 Azure PowerShell 创建警报
  • 在批处理作业中创建文件名作为时间戳

    我们有一个每天运行的批处理作业 并将文件复制到拾取文件夹 我还想获取该文件的副本并将其放入具有文件名的存档文件夹中 yyyy MM dd log 在 Windows 批处理作业中执行此操作的最简单方法是什么 我基本上是在寻找与此 Unix
  • 检测 HTML5 Video 元素是否正在播放 [重复]

    这个问题在这里已经有答案了 我浏览了几个问题来了解 HTML5 元素是否正在播放 但找不到答案 我查看了 W3 文档 它有一个名为 playing 的事件 但我似乎无法让它工作 这是我当前的代码 var stream document ge
  • Mockito 通过,但代码覆盖率仍然较低

    package com fitaxis test import java sql SQLException import org junit Assert import org junit Test import org mockito M
  • 在 Vue 项目中创建和操作 SVG

    我是 Vue js 新手 需要创建一个 Vue 组件来创建和操作 SVG 根据我的理解 在 Vue 组件中使用 JQuery 并不是最好的选择 不过我愿意 因为选择元素非常简单 这是我的 Vue 组件 但我不确定如何使其发挥作用 注意 SV
  • 如何通过jquery将点击更改为鼠标悬停或悬停?

    我想在鼠标悬停或悬停时显示日期 现在是 onclick 我已经使用工具提示来显示数据 但我想在鼠标悬停时显示数据 我尝试了很多但没有成功 任何机构都可以提供帮助 我们将不胜感激 提前致谢 这是我的代码 它想在单击鼠标悬停 悬停时进行更改
  • 按修改日期排序该数组?

    我有一个 php 文件 它在我的用户目录中创建一个包含所有内容的数组 然后该数组被发送回 iPhone 我的 php 创建的数组按字母顺序排序 我希望它按文件创建日期排序 这是我的 php 文件的样子 我该怎么做 谢谢 Using usor
  • 将泛型集合 List<> 绑定到属性网格

    我尝试绑定通用集合列表联系方式 to propGrid但输出与我的预期不符 我想列表联系方式显示为ListBox in propGrid 我该怎么做 谢谢 class Contact public string Name get set p
  • 如何获取执行查询的表名? (蟒蛇/sqlite)

    我正在运行一个简单的查询并将结果转换为 json 我想动态地执行此操作 以便我可以使用一个函数来处理所有查询 query INSERT INTO Tests name start end VALUES params name start e
  • 如何使用项目的哈希值检查 HashSet 是否包含该项目?

    我想检查 HashSet 是否包含特定元素 我已经有了int元素的哈希码 但不是对元素本身的引用 是否可以在不迭代整个集合的情况下做到这一点 没有为什么 哈希码与对象之间没有一对一的映射 鸽子原理 Net HashSet Dictionar
  • 嵌套并行和折叠 for 循环之间有区别吗?

    我知道启用嵌套并行性将允许嵌套 omp 并行 for 循环也被并行化 但我在嵌套的 for 循环 for 内部 中使用塌陷 2 有区别吗 为什么或者为什么不 假设最好的情况 循环索引之间没有依赖性并且其他条件相同 是的 有很大的区别 使用c