MPI 缓冲发送/接收顺序

2023-12-08

我正在使用 MPI(使用 fortran,但问题比任何给定语言都更具体地针对 MPI 标准),并且特别使用缓冲发送/接收函数 isend 和 irecv。现在,如果我们想象以下场景:

进程0:

isend(stuff1, ...)
isend(stuff2, ...)

流程一:

wait 10 seconds
irecv(in1, ...)
irecv(in2, ...)

消息是否按照发送顺序传递到进程 1,即我能否确定 in1 == stuff1 和 in2 == stuff2如果所有情况下使用的标签都相同?


是的,消息按照发送的顺序接收。标准将其描述为非超车消息。看到这个MPI 标准部分有关更多详细信息,请参阅以下摘录:

订单消息是非超车的:如果发送方连续向同一目的地发送两条消息,并且两条消息都匹配相同的接收,则如果第一条消息仍处于待处理状态,则此操作无法接收第二条消息。如果接收者连续发布两个接收,并且都匹配相同的消息,则如果第一个接收操作仍处于待处理状态,则该消息无法满足第二个接收操作。此要求有利于发送与接收的匹配。如果进程是单线程的并且在接收中未使用通配符 MPI_ANY_SOURCE,它可以保证消息传递代码是确定性的。 (稍后描述的一些调用,例如 MPI_CANCEL 或 MPI_WAITANY,是不确定性的其他来源。)

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

MPI 缓冲发送/接收顺序 的相关文章

  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • 如何用OpenCV解决图像处理相机IO延迟

    我有一个 OpenCV 程序 其工作原理如下 VideoCapture cap 0 Mat frame while true cap gt gt frame myprocess frame 问题是如果myprocess耗时较长 超过相机的I
  • 如何让 UI 线程等待信号量,同时处理其他调度程序请求? (就像 MessageBox.Show 本身所做的那样)

    通常 当 UI 线程调用类似的东西时MessageBox Show 当前代码执行不会继续 直到用户单击 确定 但程序将继续运行在 UI 线程上分派的其他代码 In 这个问题 https stackoverflow com questions
  • Python:并行修改数组的简单方法

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

    An 异步任务单击时执行 List
  • Parallel.ForEach - 优雅取消

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

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

    我有一个包含我要运行的命令行的文件 该文件包含大约 2 000 行 我有 8 个可用核心 是否可以解析文件并启动 8 个进程 然后在其中一个程序完成时从文件中执行另一个进程 我希望这种情况继续下去 直到到达文件末尾 Use GNU并行 ht
  • C# 并行与并行线程代码性能

    我一直在测试 System Threading Parallel 与线程的性能 我很惊讶地发现并行比线程花费更长的时间来完成任务 我确信这是由于我对并行的了解有限 我刚刚开始阅读 我想我会分享一些片段 如果有人可以向我指出并行代码比线程代码
  • 为什么我应该更喜欢单个“await Task.WhenAll”而不是多个等待?

    如果我不关心任务完成的顺序 只需要它们全部完成 我是否仍然应该使用await Task WhenAll而不是多个await 例如 是DoWork2下面是一个首选方法DoWork1 为什么 using System using System
  • PHP 中的并行处理 - 你是如何做到的?

    我目前正在尝试在 php 中实现一个作业队列 然后 队列将作为批处理作业进行处理 并且应该能够并行处理一些作业 我已经做了一些研究并找到了几种实现它的方法 但我并不太了解它们的优点和缺点 例如 通过多次调用脚本来进行并行处理fsockope
  • 使用 Cygwin64 的 Fortran MPI

    我正在使用 Codeblock IDE 编写和编译我的 Fortran 程序 现在我想将 MPI 包含到我的 GNU Fortran 编译器中 在遵循 GNU GCC 编译器的一些指南之后 我突然想到我需要为 MPICH2 设置以下内容 有
  • 如何在 bash 脚本中使用并行编程/多线程?

    这是我的脚本 bin bash script to loop through directories to merge fastq files sourcedir path to source destdir path to dest fo
  • 与 PostgreSQL CTE 的一般并行性

    我正在处理一些大数据 并且在查询中获取并行计划是必要的 我也很喜欢使用 CTE 来表达我的查询 但根据 PostgreSQL 的文档 我不太确定 CTE 是否对并行性造成严重限制 Here https www postgresql org
  • 并行应用程序的可变与不可变[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我正在编写的应用程序中 我需要编写大量基本类型 这些类型很可能是不可变的 但我想知道并行应用程序中可变类型与不可变类型的比较如何 您可以对可变
  • Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

    假设我有一个List
  • 为什么 Spark 没有使用本地计算机上的所有核心

    当我在 Spark Shell 中或作为作业运行一些 Apache Spark 示例时 我无法在单台计算机上实现完全的核心利用率 例如 var textColumn sc textFile home someuser largefile t
  • 为什么以下内容会并行运行而不是顺序运行?

    给定以下函数evalPair parPair and deepSeq分别 evalPair Strategy a gt Strategy b gt Strategy a b evalPair sa sb a b do a lt sa a b
  • 使用多线程并行化 Java 中的 for 循环

    我对java很陌生 我想使用执行器服务或使用java中的任何其他方法并行化嵌套for循环 我想创建一些固定数量的线程 这样CPU就不会完全被线程占用 for SellerNames sellerNames sellerDataList fo

随机推荐

  • Bokeh 中的日期时间轴

    对于我的图 我想在散景中使用 日期时间 选项 如下所示 top figure width 900 height 500 x axis type datetime 我的 x 轴数据采用 datetime time 格式 x time date
  • Python Tkinter 可滚动框架类?

    我想做一个Tkinter class 基于答案在这里 这是一个Frame自动显示 隐藏Scrollbar根据需要围绕内容 我上面链接的答案非常适合我的需求 但需要注意的是 因为它不包含在class 它不可重复使用 我认为这会非常快速和简单
  • 在今天的特定小时和分钟创建 NSDate

    我怎样才能创建一个NSDate今天的日期和小时 分钟和秒分别为 5 0 和 0 IE 日期将为 07 02 2010 05 00 00 Gives us the current date NSCalendar gregorian NSCal
  • jplayer在一页中显示多个mp3文件链接

    我在页面中使用 jplayer 当单击链接时我想播放单击的链接 但是每次播放 test1 mp3 时 我该如何解决 代码如下 如果需要的话页面如下 http www dilyurdu com audio htm function liste
  • desc 附近的 SQL 语法错误 [重复]

    这个问题在这里已经有答案了 我得到的错误是 com mysql jdbc exceptions jdbc4 MySQLSyntaxErrorException 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解使
  • Codeigniter 中的选择框验证

    我是 Codeigniter 的新手 在选择框验证方面遇到一些问题 我想要在开始时默认选择值
  • 由于规范中的日期格式,gemspec 无效

    当我在 Gemfile 中包含我制作的 gem 时 感谢 Bundler 版本 1 0 12 然后我尝试像这样捆绑或 rake rake 我收到此错误消息 Invalid gemspec in Users zagzag rvm gems r
  • 顺利地将对象移动到目的地 Unity3D

    我一整天都在尝试从point A to point B顺利 所以我尝试了Lerp 朝着去 and 平滑阻尼但每次物体都会从A点消失并立即出现在B点 我尝试了在互联网上找到的所有解决方案 但得到了相同的结果 你能救我一命并帮我解决这个问题吗
  • 您的 Ruby 版本是 2.1.0,但您的 Gemfile 指定为 2.0.0

    在我的 Gemfile 中 我指定了 ruby 版本 2 0 0 ruby 2 0 0 但我的控制台告诉我我有 2 1 0dev ruby v ruby 2 1 0dev 2013 09 16 trunk 42951 x86 64 darw
  • 如何存储具有数十亿个节点和顶点的大型有向未加权图

    图的大小为数十亿个节点和数百亿个顶点 它将存储网页 URL 以及网页之间的链接 并将用于测试排名算法 任何语言都可以 但java是首选 到目前为止我找到的解决方案 neo4j 存储在排序的平面文件中 是的 我已经读过存储 访问有向图的最佳方
  • Ada 95:修改字典程序的输出

    我找到了这本词典作者 William Whitaker 在互联网上 我喜欢它的解析能力 但输出不适合我 问题 对我来说是挑战 给定输入形式 例如 audiam 程序将返回以下输出 纯文本 audi am V 4 1 PRES ACTIVE
  • 随机数生成器性能因平台而异

    我正在测试 C 中随机数生成器的性能 并发现了一些我不明白的非常奇怪的结果 我已经测试了 std rand 与使用 std minstd rand 的 std uniform real distribution std rand 计时代码
  • Android - 三星:使用配置活动创建小部件失败

    我构建了一个可以将小部件添加到主屏幕的应用程序 该小部件可与我的 Nexus 6P 和摩托罗拉 Moto G3 配合使用 对于三星手机 使用 S3 mini 4 1 2 S5 S6 6 0 1 进行测试 小部件根本不会添加 或者 Touch
  • 使用 Apache Kafka Streaming 解析 JSON 数据

    我有一个从 Kafka 主题读取 JSON 数据的场景 通过使用 Kafka 0 11 版本 我需要编写 Java 代码来流式传输 Kafka 主题中存在的 JSON 数据 我的输入是包含字典数组的 Json 数据 现在我的要求是获取 文本
  • 如何在 Swift 中使用名称为关键字的 Objective-C 类

    我们正在尝试使用 BZObjectStore 库 https github com expensegasprices BZObjectStore 在我们的 Swift 项目中 但在这个库中 他们使用 where 作为名称来设置查询条件 BZ
  • 如何取回以二进制形式存储在数据库中的java UUID

    我们有一个 Java UUID 字段 经过以下转换后以二进制字节形式存储在数据库 MySQL 中 private byte getUUIDtoBytes UUID devId byte uuidBytes new byte 16 ByteB
  • Spring JPA/Hibernate EmptyInterceptor 不注入 Entitymanager/Spring beans

    专家 大师 朋友 我们正在使用 Spring 3 2 JPA 2 Hibernate 4 2 组合 并在尝试将任何带有 Spring 注解的 bean 注入到实现如下所示的 EmtyInterceptor 时面临这个奇怪的空指针问题 我们尝
  • Ansible 不会转义 Windows 路径第一个参数

    我在额外参数中有带有 Windows 路径名的剧本 第一个参数不转义驱动器号和斜杠 ansible playbook d yaml extra vars ainstalldir c test stagedir D packages outd
  • Delphi - X 个组件后的 TScrollBox 问题

    我注意到在我的一个测试应用程序中 在将如此多的 TPanels 添加到 TScrollBox 后 我遇到了绘制超过一定数量的 TPanels 的问题 我在绘制之前禁用滚动框 并且它总是在绘制之前被清除 因此不存在相对位置问题 最初我以为我可
  • MPI 缓冲发送/接收顺序

    我正在使用 MPI 使用 fortran 但问题比任何给定语言都更具体地针对 MPI 标准 并且特别使用缓冲发送 接收函数 isend 和 irecv 现在 如果我们想象以下场景 进程0 isend stuff1 isend stuff2