MPI_Reduce 是阻塞(还是天然屏障)?

2023-11-23

我有下面的 C++ 代码片段,它基本上使用经典的蒙特卡罗技术计算 pi。

    srand48((unsigned)time(0) + my_rank);

    for(int i = 0 ; i < part_points; i++)
    {
            double x = drand48();

            double y = drand48();

            if( (pow(x,2)+pow(y,2)) < 1){ ++count; }
    }

    MPI_Reduce(&count, &total_hits, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

    MPI_Barrier(MPI_COMM_WORLD);

    if(my_rank == root)
    {
            pi = 4*(total_hits/(double)total_points);

            cout << "Calculated pi: "  <<  pi << " in " << end_time-start_time <<  endl;
    }

我只是想知道 MPI_Barrier 调用是否有必要。 MPI_Reduce 是否确保在reduce 操作完全完成之前不会执行if 语句的主体?希望我说清楚了。谢谢


是的,所有集体通信调用(Reduce、Scatter、Gather 等)都是阻塞的。没有必要设置障碍。

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

MPI_Reduce 是阻塞(还是天然屏障)? 的相关文章

  • R 中使用 randomForest 进行内存高效预测

    TL DR我想知道使用基于大型数据集 数百个特征 数十万行 构建的随机森林模型执行批量预测的内存有效方法 Details 我正在处理一个大型数据集 内存中超过 3GB 并且想要使用以下方法进行简单的二进制分类randomForest 由于我
  • 处理异步并行任务的多个异常

    Problem 多个任务并行运行 所有任务 没有任务或其中任何任务都可能抛出异常 当所有任务完成后 必须报告所有可能发生的异常 通过日志 电子邮件 控制台输出 等等 预期行为 我可以通过 linq 使用异步 lambda 构建所有任务 然后
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 了解多个进程的并发文件写入

    从这里 UNIX 中文件追加是原子的吗 https stackoverflow com questions 1154446 is file append atomic in unix 考虑多个进程打开同一个文件并向其追加内容的情况 O AP
  • 是否可以在 OpenCL 中并行运行求和计算?

    我是 OpenCL 的新手 不过 我了解 C C 基础知识和 OOP 我的问题如下 是否可以以某种方式并行运行求和计算任务 理论上可能吗 下面我将描述我尝试做的事情 任务例如是 double values new double 1000 l
  • 使用 TestNG 运行并行测试时捕获 WebDriver 屏幕截图

    我目前正在通过分别重写 TestListenerAdapter 方法 onTestFailure 和 onTestSuccess 来捕获 TestNG 中失败和成功的屏幕截图 为此 您需要指定要截取屏幕截图的驱动程序 我的问题 在方法级别并
  • 同时调用多个 API,并在相应请求处理完成后立即更新 UI Android

    我需要跑6个API同时调用并且需要在相应的请求完成时更新每个用户界面 目前我正在使用kotlin 协程并行执行使用以下代码 suspend fun getAllData List
  • 在 C# 中创建加密随机数的最快、线程安全的方法?

    请注意 在多个线程上并行生成随机数时 加密随机数生成器不是线程安全的 使用的发电机是RNGCryptoServiceProvider它似乎重复了很长一段随机位 128 位 重现此情况的代码如下所示 缺乏使用锁来保护访问RNGCryptoSe
  • 有没有一种简单的方法来准备 Fortran 代码以进行并行调用

    我想使用 OpenMP 在 C 程序中并行求解多个大型 ODE 系统 由于某些原因 我需要使用 ODE 求解器 但我只能找到 Fortran 90 子例程 而且代码太大 无法简单地将其转换为 C 我知道 Fortran 广泛使用静态内存 因
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • 通过 mpi 发送 c++ std::vector

    我知道存储一个std vector
  • 如何让 UI 线程等待信号量,同时处理其他调度程序请求? (就像 MessageBox.Show 本身所做的那样)

    通常 当 UI 线程调用类似的东西时MessageBox Show 当前代码执行不会继续 直到用户单击 确定 但程序将继续运行在 UI 线程上分派的其他代码 In 这个问题 https stackoverflow com questions
  • 子进程调用,它们是并行完成的吗?

    我一直在谷歌搜索这个问题的答案 但似乎没有一个答案 谁能告诉我如果subprocess模块是否并行调用 Python 文档建议它可用于生成新进程 但没有提及它们是否并行 如果它们可以并行完成 您能否给我举一个例子或将我链接到一个例子 这取决
  • 使用多处理和 PySftp 并行下载

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

    我有以下简单的功能 include
  • MPI 中的等级和进程有什么区别?

    MPI 中的等级和进程有什么区别 Here http www netlib org utk papers mpi book mpi book html是我学习所有 MPI 的资源 您可能会发现它很有用 至于你的问题 流程是正在运行的程序的实
  • 在 omp 并行 for 循环中使用 unique_ptr 会导致 SEG.FAULT

    采取以下代码 include
  • 使用 GDB 远程调试 MPI

    我正在尝试从 pi 的远程访问组中调试我使用 MPI 编写的代码 我无法直接访问 Pi 以便能够使用 GUI 来调试代码 我已经尝试过使用屏幕显示的内容question https stackoverflow com questions 3
  • 利用 SLURM 上的所有 CPU

    我想在集群上运行作业 不同节点上有不同数量的 CPU 我不知道哪些节点将分配给我 正确的选项是什么 以便作业可以在所有节点上创建与 CPU 一样多的任务 bin bash l SBATCH p normal SBATCH N 4 SBATC

随机推荐

  • Oracle SQL如何编写一条sql语句来验证用户是否在我的网络中(即朋友或朋友的朋友)

    我有这个问题 给定一个users由社交网络中用户的用户名组成的表friends包含用户名和用户朋友名的表 如下所示 username friendname John Thomas Chris James 我正在尝试编写一条 SQL 语句 如
  • firebase 重定向到 URL 的云函数

    我正在尝试为我的移动应用程序创建下载端点 该应用程序可在应用程序商店和游戏商店中使用 我想要一个可供用户在 iOS 设备或 Android 设备上下载应用程序的 URL 我试图找出是否可以为此目的为 firebase 创建一个云函数 我正在
  • Rollup 是否可以保留文件和文件夹结构?

    我正在使用 ES6 导入并使用 Rollup 对其进行转译 输出是单个捆绑文件 Rollup 可以配置为生成文件到文件的转译结果吗 这是我正在使用的当前配置 它显然会输出一个文件 gulp task rollup function cons
  • Rails 4 授权 gem [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找 Rails 4 的授权 gem 以前我用康康舞 但现在看起来已经过时了 我在这里找到了 the rolehttps github com
  • 如何选择字符串多行?

    我在尝试着Select String在多行文本上 Example This is line1
  • 解析非常大的 XML 文件并编组为 Java 对象

    我有以下问题 我有非常大的 XML 文件 例如 300 Megs 我需要解析它们以便将它们的一些值添加到数据库中 这些文件的结构也非常复杂 我想使用 Stax Parser 因为它提供了一次仅拉解析 从而处理 XML 文件的一部分的良好可能
  • 为什么可以像数组一样查询 jQuery('div') ?

    我还有一个关于 jQuery 架构的问题 div 构造一个新的jQuery object div instanceof jQuery true 我想知道为什么可以像数组一样查询它 尽管它不是数组 div 0 returns the firs
  • 使用新的 Unity VideoPlayer 和 VideoClip API 播放视频

    电影纹理Unity 5 6 0b1 发布后最终被弃用 现在发布了在桌面和移动设备上播放视频的新 API 视频播放器 and 录像片段如果需要 可用于播放视频并检索每帧的纹理 我已经设法使视频正常工作 但无法从 Windows 10 上的编辑
  • Android 中使用 GreenRobot eventbus 的 IPC

    我需要使用远程服务进行通信 绿色机器人 EventBus 不幸的是 它似乎不适用于IPC 查看代码 我也没有看到解决方法 任何帮助 将不胜感激 额外问题 是否还有其他支持 IPC 的 EventBus 适用于 Android 我需要使用 g
  • 如何让 scalaz IDEA 实时模板适用于符号方法?

    中的许多方法scalaz具有符号 unicode 等价物 例如forever and 当然 我的做法是错误的 符号方法确实有 ASCII 等价物 该项目包含一个实时模板 XML 文件对于 IDEA 所以这些可以是自动完成 我相信通过使用fo
  • Java正则表达式仅第一个匹配

    如何告诉以下正则表达式仅查找第一个匹配项 以下代码不断查找字符串中所有可能的正则表达式 即我只寻找子字符串的索引 200 800 50 public static void main String args String regex Str
  • PHP 用 POST 数据打开另一个网页

    我是 PHP 新手 我正在尝试做一些可能是不好的做法并且很可能是不可能的事情 我基本上只是将一些东西组合在一起来测试我的知识并看看 PHP 可以做什么 我有一个带有收集数据的表单的网页 它被提交给一个 PHP 脚本 该脚本执行一系列处理 但
  • Android 文本视图中的多个可点击字符串

    我正在创建一个小型 Android 应用程序 我想在文本视图中显示文本 并有多个部分可供单击 每个应该显示一些不同的消息 最后 我设法找出如何在一个文本视图中显示多个跨度 但不幸的是 onClick 方法不起作用 根本没有任何反应 甚至连一
  • 计算数据帧的每一行与另一个数据帧中的所有其他行之间的欧氏距离

    我需要生成一个数据帧 该数据帧的每一行与另一个数据帧的所有其他行之间具有最小欧几里德距离 我的两个数据帧都很大 大约 40 000 行 这是我到目前为止可以解决的问题 x lt matrix c 3 6 3 4 8 nrow 5 ncol
  • 如何复制数组?

    我在Delphi中遇到了这样一个基本问题 我无法解决它 My Code 注意 DataR在下面的方法中是本地的 但通常它是一个类变量 只是为了概念它是本地的 class procedure TCelebrity BeginRead var
  • 参数包扩展顺序

    我有两个函数来读取二进制文件 第一个函数读取sizeof T 文件中的字节 template
  • C 中 EOF 问题

    我正在编写一个程序 该程序应该读取两个可以包含换行符和各种其他字符的字符串 因此 我使用 EOF Ctrl Z 或 Ctrl D 来结束字符串 这对于第一个变量来说效果很好 但是对于第二个变量来说 这似乎是有问题的 因为显然有东西卡在输入缓
  • Git 删除重复提交

    经过一番使用遥控器后 我的所有提交最终都增加了一倍 例如 代替 C3107 C3 C2 C1 I got C3107 C3107 C3 C3 C2 C2 C1 C1 其中双重提交具有相同的名称但不同的哈希值 问题是我注意到它太晚了 而且我没
  • Android Studio(海豚 | 2021.3.1)和(电鳗 | 2022.1.1)不显示布局预览

    我正在使用 Android Studio Dolphin 2021 3 1 电鳗 2022年1月1日 Android studio 更新后花栗鼠 2021 2 1 至 Android Studio Dolphin 2021 3 1 我的所有
  • MPI_Reduce 是阻塞(还是天然屏障)?

    我有下面的 C 代码片段 它基本上使用经典的蒙特卡罗技术计算 pi srand48 unsigned time 0 my rank for int i 0 i lt part points i double x drand48 double