MPI:阻塞与非阻塞

2023-11-27

我无法理解 MPI 中阻塞通信和非阻塞通信的概念。两者有何区别?有什么优点和缺点?


阻止通信是使用完成的MPI_Send() and MPI_Recv()。在通信完成之前,这些函数不会返回(即,它们会阻塞)。稍微简化一下,这意味着缓冲区传递给MPI_Send()可以重复使用,要么是因为 MPI 将其保存在某个地方,要么是因为它已被目的地接收。相似地,MPI_Recv()当接收缓冲区已充满有效数据时返回。

相反,非阻塞通信是使用MPI_Isend() and MPI_Irecv()。即使通信尚未完成,这些函数也会立即返回(即,它们不会阻塞)。你必须打电话MPI_Wait() or MPI_Test()查看通讯是否完成。

当足够时就使用阻塞通信,因为它更容易使用。非阻塞通信在必要时使用,例如,您可以调用MPI_Isend(),做一些计算,然后做MPI_Wait()。这允许计算和通信重叠,这通常会提高性能。

请注意,集体通信(例如,all-reduce)仅在 MPIv2 之前的阻塞版本中可用。 IIRC、MPIv3 引入了非阻塞集体通信。

可以看到 MPI 发送模式的快速概览here.

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

MPI:阻塞与非阻塞 的相关文章

  • Random 并行生成数字 1 的次数超过 90% [重复]

    这个问题在这里已经有答案了 考虑以下程序 public class Program private static Random rnd new Random private static readonly int ITERATIONS 50
  • 将 R 包函数导出到 R 包内的并行集群

    有一些功能 比如function1 在我正在开发的 R 包中 它依赖于辅助函数 例如h function1 and h function2 在我的包裹里 我正在并行化重复调用function1在我的包中的另一个函数中 目前 在我的包中我正在
  • 单机Octave并行计算——包和示例

    我想在单台机器 而不是集群 上并行化 Octave 中的 for 循环 前段时间我问了一个关于Octave并行版本的问题Octave并行计算 https stackoverflow com questions 7047840 paralle
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之
  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • 并行模拟写入同一文件

    我的目标是在集群上并行运行 10 000 个左右的 Julia 编码模拟 每个模拟独立于所有其他模拟 每个模拟都有一个要输出的数字 以及有关哪个模拟产生该数字的 3 列信息 因此 强制每个模拟打印在单独的文件上对我来说听起来有点愚蠢 我可以
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • 是否可以在 OpenCL 中并行运行求和计算?

    我是 OpenCL 的新手 不过 我了解 C C 基础知识和 OOP 我的问题如下 是否可以以某种方式并行运行求和计算任务 理论上可能吗 下面我将描述我尝试做的事情 任务例如是 double values new double 1000 l
  • 是否有一种更简单的方法可以并行运行命令,同时在 Windows PowerShell 中保持高效?

    此自我回答旨在为那些受困于 Windows PowerShell 并由于公司政策等原因而无法安装模块的用户提供一种简单且高效的并行替代方案 在 Windows PowerShell 中 built in可用的替代方案local并行调用是St
  • 与 GridSearchCV 的并行错误,与其他方法一起工作正常

    我使用 GridSearchCV 时遇到以下问题 它在使用时给我一个并行错误n jobs gt 1 同时n jobs gt 1与 RadonmForestClassifier 等单一模型配合良好 下面是一个显示错误的简单工作示例 train
  • Julia Threads.@threads 比单线程性能慢

    我正在尝试求解一维热方程的数值 我正在使用有限差分 并且在 Julia 中使用 threads 指令时遇到一些问题 特别是下面有相同代码的两个版本 第一个是单线程 而另一个使用 threads 除了 thread指令之外 它们是相同的 fu
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • MPI 从文本文件中读取

    我正在学习 MPI 编程 我遇到了这个问题 假设我有一个包含 100 000 行 行的 txt 文件 如何将它们分块以供 4 个处理器处理 即我想让处理器 0 负责第 0 25000 行的处理 让处理器 1 负责第 25001 50000
  • 与 GNU Make 等 Python 相关的并行任务并发

    我正在寻找一种方法或者可能是一种哲学方法来如何在 python 中执行类似 GNU Make 的操作 目前 我们使用 makefile 来执行处理 因为 makefile 非常擅长通过更改单个选项 j x 进行并行运行 此外 gnu mak
  • GNU 并行与 rsync

    我正在尝试运行一些实例rsync并行使用ssh with GNU parallel 我正在运行的命令是这样的 find tmp tempfolder type f name chunck sort parallel gnu j 4 v ss
  • Python 多处理:全局对象未正确复制到子级

    前几天我回答了一个关于SO的问题 https stackoverflow com q 67047533 1925388关于并行读取 tar 文件 这是问题的要点 import bz2 import tarfile from multipro
  • 并行何时会提高性能

    我试图理解何时使用parallel会提高性能 我用一个简单的代码对其进行了测试 该代码运行了超过 100 000 个项目List
  • tbb:并行查找第一个元素

    我遇到了这个问题 查找列表中满足给定条件的第一个元素 不幸的是 该列表相当长 100 000 个元素 并且使用单个线程评估每个元素的条件总共需要大约 30 秒 有没有办法干净地并行化这个问题 我浏览了所有tbb模式 但找不到任何合适的 UP
  • AsyncTask的并行执行

    An 异步任务单击时执行 List

随机推荐

  • 如何在 python 3 中使用带有并发未来 ThreadPoolExecutor 的队列?

    我正在使用简单的线程模块来执行并发作业 现在我想利用并发 future 模块 有人能给我举一个使用并发库的队列的例子吗 我收到 TypeError 队列 对象不可迭代 我不知道如何迭代队列 代码片段 def run item self lo
  • Entity Framework 4、复杂类型、StoredProcs 和临时表的问题

    我正在 Entity Framework 4 上折腾 遇到了一个小问题 我有一些存储过程正在拉入我的 EDMX 中 当我从这些过程创建复杂类型时 EF 获取列信息没有问题 除了一处 困惑了一段时间后 我发现是我的临时表被填充导致了问题 实际
  • 我应该存储整个对象,还是容器中对象的指针?

    从头开始设计一个新系统 我将使用 STL 来存储某些长期存在的对象的列表和映射 问题 我应该确保我的对象具有复制构造函数并将对象的副本存储在我的 STL 容器中 还是自己管理生命周期和范围并仅将指向这些对象的指针存储在我的 STL 容器中通
  • PHP 的特殊行为 (5.3)、静态继承和引用

    我正在 PHP 5 3 中编写一个库 其中大部分是一个具有多个静态属性的类 这些静态属性由子类扩展以允许子类的零配置 无论如何 这里有一个示例来说明我发现的特殊性
  • IE 中 jQuery ajax 调用出现“无传输”错误

    我需要使用 foursquare API 来搜索场地 当然是跨域的 它在 Firefox 中没有任何问题 但在 Internet Explorer 中 我测试过 7 8 9 我的 JavaScript 代码如下所示 searchVenues
  • 如何将android源代码(AOSP)导入到Android studio中?

    我知道如何将android源代码导入到eclipse中 但是有什么方法可以将android源代码导入到android studio中 因为我想把我的IDE从eclipse换成android studio 我知道这个问题已经得到了回答 但我想
  • 将 StringBuilder 传递给需要 char 指针的 DLL 函数

    我正在尝试与 Delphi 中创建的 DLL 库进行交互 在 C 中 我完美地完成了这个调用 for int y 1 y lt 12 y char chanName char malloc 21 memset chanName 0 21 c
  • 计算数据框中成对有效观察值(无 NA)的数量

    假设我有一个像这样的数据框 Df lt data frame V1 c 1 2 3 NA 5 V2 c 1 2 NA 4 5 V3 c NA 2 NA 4 NA 现在我想计算两个变量的每个组合的有效观察数 为此 我写了一个函数sharedc
  • Android 4.4.2 中 DialogFragment 顶部有蓝线

    我的对话框片段顶部出现一条蓝线 我无法摆脱它 我什至不知道为什么它首先出现 有人知道如何摆脱它吗 我已经在多个设备上进行了测试 并且在更高版本的 Android 上运行得很好 My code private void setupDialog
  • Pandas 合并意外产生后缀

    我正在将两个 Pandas DataFrame 合并在一起 并获得 x 和 y 后缀 易于复制下面的示例 我尝试添加 suffixes False False 进入合并 但它返回一个错误 ValueError columns overlap
  • 通过 iframe 脚本加载器避免全局变量污染?

    问题 存在需要包含在网页上的编码不良的脚本 这些脚本通过执行以下操作来污染全局范围 为未声明的标识符赋值 向内置构造函数添加属性 例如Object and Array 及其原型 其他讨厌的东西 解决方案 我想包含脚本而不产生不利的副作用 我
  • C++ 中的 throw 后会调用析构函数吗?

    我运行了一个示例程序 确实调用了堆栈分配对象的析构函数 但这是否由标准保证 是的 这是有保证的 只要捕获到异常 直到命令其中调用析构函数 C 11 15 2 构造函数和析构函数 except ctor 1 当控制权从 throw 表达式传递
  • Stargazer 中的 p 值不精确

    我希望观星者的回归输出中的星星与 正常输出 中的星星相同 我产生数据 library stargazer library lmtest library sandwich set seed 1234 df lt data frame y 10
  • Visual Studio 在调试时锁定文件

    我有一个包含多个项目的 VS 解决方案 在调试特定项目时 VS 会锁定所有源文件 我想解锁调试者不依赖的源 有没有办法在一个解决方案中做到这一点 UPDATE 我使用的是 Win XP SP3 32 位 Visual Studio 2010
  • 为什么 $hash.key 语法在 ExpandString 方法中不起作用?

    以下 Powershell 脚本演示了该问题 hash a 1 b 2 Write Host hash a gt 1 Write Host hash a gt 1 Two ways of printing using quoted stri
  • 在打字稿函数中声明“this”的类型?

    我正在写一个繁重任务在打字稿中 我正在尝试翻译 JavaScript 中已有的内容 因此 当 grunt 运行一个任务时 它会运行一个函数 当它运行时 grunt 设置this具有有用属性的对象 与 jQuery 重载的方式相同this与您
  • 在分配控制台之前调用 Console.WriteLine

    我最近在我的应用程序中遇到了以下问题 它没有显示任何控制台输出 尽管控制台已通过使用分配AllocConsole 我很快就发现这是由于尝试 隐藏在代码中 在执行之前写入控制台而引起的 AllocConsole被称为 所以它看起来像这样 Co
  • 如何开发人脸识别iPhone应用程序? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试开发一款用于人脸识别 检测的 iPhone 在我的应用程序中 我想让我的 iP
  • 快速按下 Xcode 按钮时快速播放声音的最佳方法是什么?

    我有一个音板 它只是一个带有大约 8 个按钮的屏幕 每个单独的按钮都有自己的声音 按下按钮时会播放该声音 我可以通过多种方式播放声音 例如使用 SystemSound 或 AVAudioPlayer 到目前为止 系统声音似乎具有最快的响应时
  • MPI:阻塞与非阻塞

    我无法理解 MPI 中阻塞通信和非阻塞通信的概念 两者有何区别 有什么优点和缺点 阻止通信是使用完成的MPI Send and MPI Recv 在通信完成之前 这些函数不会返回 即 它们会阻塞 稍微简化一下 这意味着缓冲区传递给MPI S