C++17 中数组索引范围的并行 for 循环

2024-01-06

我需要更新一个 100M 元素的数组,并且希望并行执行。std::for_each(std::execution::par, ...)看起来很棒,除了更新需要根据我正在更新的索引访问其他数组的元素。最小的serial我尝试并行化的工作示例可能如下所示:

for (size_t i = 0; i < 100'000'000; i++)
    d[i] = combine(d[i], s[2*i], s[2*i+1]);

我当然可以手动生成线程,但这比std::for_each,因此如果能够找到一种优雅的方法来使用标准库来完成此操作,那就太好了。到目前为止我发现了一些不太优雅的使用方式for_each, 例如:

  • 通过对数组元素的地址使用指针算术来计算索引。

  • 本着 boost 的精神实现我自己的伪造迭代器counting_range.

有一个更好的方法吗?


std::ranges如果您有权访问 c++20,应该能够提供帮助,您可以迭代索引而不是数据:

#include <ranges>
#include <vector>
#include <algorithm>
#include <iostream>

int main() {
    std::vector<int> d(100);
    std::ranges::iota_view indexes((size_t)0, d.size());
    std::for_each(std::execution::par, indexes.begin(), indexes.end(), [&d](size_t i)
    {
        std::cout << i << "," << d[i] << "\n";
    });
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++17 中数组索引范围的并行 for 循环 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐

  • C# 中的方差规则

    The 方差有效性的精确规则 http blogs msdn com b ericlippert archive 2009 12 03 exact rules for variance validity aspx有点模糊而且不具体 我将列出
  • 扩展第一个容器以输出额外的 div 属性

    我开始将 pelican 与 reStructuredText 一起使用rst页面格式 我有自定义 javascript jQuery 的东西 我想用 div 属性来控制 比如data default tpl basename 具有嵌套内容
  • 上传文件并验证文件扩展名和文件大小 MVC 5

    我使用下面的代码来上传并检查文件扩展名和文件大小 Update 2控制器 public ActionResult Create Bind Include anak ID Pubdate kind title file details lin
  • 具有静态和响应宽度的两列模板

    有时我们需要结合百分比和固定值来计算尺寸 特别是在创建一些响应式布局时 就我而言 我只发现两种方法可以在纯 CSS 中实现所需的效果 Problem 让我们快速看一下这个问题 我们需要创建一个拉伸到页面整个宽度的两列布局 其中一列具有恒定的
  • Javascript:保留窗口对象引用?

    我的 javascript 代码打开一些窗口槽 var win window open 我将 win 引用与所有其他打开的窗口一起存储在一个数组中 一切正常 直到开启器刷新为止 所以我想要实现的是在加载 主 窗口时取回对打开的窗口的所有引用
  • 如何将 future 移至 lambda 表达式

    我正在使用 Visual Studio 2013 我想实现这行代码 f p get future auto task f std move f use f 我知道解决方案here https stackoverflow com questi
  • 使用枚举序数是个好习惯吗?

    我有一个枚举 public enum Persons CHILD PARENT GRANDPARENT 使用有什么问题吗ordinal 检查枚举成员之间的 层次结构 的方法 我的意思是 使用它时除了冗长之外是否有任何缺点 当有人将来可能会意
  • React Native:同步运行函数

    我是面向对象编程的新手 我对承诺 异步 同步运行函数的了解只是基础 我非常感谢您的时间和关注 这是 React Native 文档中的示例 async function getMoviesFromApi try let response a
  • 除以零不会导致 Nvidia Jetson 上的运行时异常

    我不太熟悉 ARM 处理器的内部细节 但我不明白我的 Nvidia Jetson Nano 开发板上的以下行为 C 代码示例 main c include
  • 为什么我的图像背景在 float: left 上消失?

    我想创建一个两端都有图像的导航栏 以使其更加纯净 因此 我创建了下面的 HTML 和 CSS 效果非常好 我的菜单项位于 ul li 列表中 当我设置列表样式以将所有项目放在一行上时 末端的图像消失了 那是怎么回事 我如何解决它 罪魁祸首是
  • iPad UITextField - 使用 contentVerticalAlignment = UIControlContentVerticalAlignmentCenter 调整框架大小时光标未居中

    我正在开发一款通用的 iPhone iPad 应用程序 我根据用户输入调整一些 UITextField 的大小 我还有一些代码来移动 UITextFields 以便它们的位置在调整大小时有意义 这段代码不太短 但基本上可以归结为修改 UIT
  • 快速(以开发人员时间)方式使用 Java 中的大量 C++ 代码

    背景 我们正在设计一个物理应用程序 它将进行大量数据分析 但我们的重点是集成物理电子设备 基本上我希望能够打电话root http en wikipedia org wiki ROOT 这是一个来自CERN的大数据分析库 用C 编写 用Ja
  • BigQuery - UNNEST 中引用的值必须是数组。 UNNEST 包含 STRUCT 类型的表达式 ... [5:18]

    大家好 这次我遇到了一个新的分组数组错误 我将与您分享我正在咨询的表的架构 以便您可以告诉我解决方案 我尝试使用 ARRAY TO STRING 但在这种情况下它没有成功 SELECT individual details gender A
  • 由于反射而访问私有字段和属性不是安全问题吗?

    我最近才发现here https stackoverflow com questions 95910 find a private field with reflection由于反射 可以 至少在 C 中 查找私有字段和属性 我很惊讶 尽管
  • 无法子类化 WKWebView

    我正在尝试子类化 WKWebView 当我实现自己的初始化程序时 出现以下错误 required initializer init coder must be provided by subclass of WKWebView 好的 众所周
  • C++ 程序中非常奇怪的堆栈溢出

    我前段时间写了一个程序 Mac OS X C SDL FMOD 它的性能相当不错 但最近我想扩展它的功能并添加一些更多的代码 现在 当我运行它并尝试测试新功能时 程序因 SIGABRT 崩溃 查看调试器 在函数堆栈上我看到 kill 杀死
  • 签入范围前提条件

    我喜欢番石榴前提条件 但我真正需要的是另一种方法 检查数字是否在范围内 像这样的smt probably there should be checkStateInRange also public static void checkArgu
  • 发送 HTTP 时的 OutputStream OutOfMemoryError

    我正在尝试将大型视频 图像文件从本地文件系统发布到 http 路径 但一段时间后遇到内存不足错误 这是代码 public boolean publishFile URI publishTo String localPath throws E
  • 有没有办法限制或限制 PostgreSql 中的用户或连接?

    我们有一个设置 其中数据库实例在多个用户之间共享 我们正在尝试对共享 PostgreSQL 实施某种形式的节流或速率限制 以便一个用户不会因消耗所有资源而导致其他用户挨饿 我们可以想到的一种方法是添加连接池并固定我们为每个租户提供的连接数量
  • C++17 中数组索引范围的并行 for 循环

    我需要更新一个 100M 元素的数组 并且希望并行执行 std for each std execution par 看起来很棒 除了更新需要根据我正在更新的索引访问其他数组的元素 最小的serial我尝试并行化的工作示例可能如下所示 fo