MPI_Bsend 的缺点?

2024-02-20

我最近遇到了一个死锁,我可以通过使用来解决MPI_Bsend代替MPI_Send。如果我理解正确的话 MPI_Bsend 是一个非阻塞发送,并且可以安全地修改我发送的内容,而不必担心发送操作何时完成,所以

double x = 1;
MPI_Bsend(&x,1,MPI_DOUBLE,master,1,MPI_COMM_WORLD);
x = 0;

将始终导致 x 被发送为 1。

读书时有关 MPI 发送模式的文档 http://www.mcs.anl.gov/research/projects/mpi/sendmode.html我遇到了这个警告MPI_Bsend

MPI 规范的最新附加内容。仅应在绝对必要时使用。

我的问题是:

  1. 为什么?是不是因为 Bsend 可能并非所有实现都支持?
  2. 支持 MPI_Bsend 的 Open MPI 最旧版本是什么?
  3. 使用 MPI_Bsend 时还需要注意其他事项吗?

Why is MPI_BSend有问题吗?

MPI 中的缓冲操作需要用户提供足够大的缓冲区。 MPI 描述了每个操作可以使用多少缓冲区的操作模型 - 因此您可以从理论上计算总共需要多少缓冲区。然而,在足够复杂的应用中无法正确计算所需的缓冲区量。没有足够的缓冲空间是一个问题不可恢复的错误。这个错误可能是一个非常讨厌的heisenbug,在特定情况下随机发生。

请注意,MPI 中的缓冲模式和非阻塞模式是不同的(甚至是正交的)。使用非阻塞原语编写正确的 MPI 程序更容易,即使用MPI_Isend。通常建议这样做。

关于什么MPI_BSend支持?

“后期添加”的引用具有误导性。 24 年前,它就已经出现在第一个 MPI 标准中。我不会担心图书馆的支持,而是担心我提到的其他问题。

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

MPI_Bsend 的缺点? 的相关文章

  • MPI_Scatter:为什么我必须在所有进程中分配内存?

    我正在使用 MPI 在 c 中 并行化 Conways 的生命游戏 我必须从输入中读取一个 非常大的 矩阵 然后将其按行分散到切片中 然后并行处理每个切片 我遵循的想法是只让一个进程处理 I O 内容 特别是 进程 0 从文件中读取并将初始
  • 从多个 MPI 输出组成 VTK 文件

    对于盖驱动腔 CFD 的格子玻尔兹曼模拟 我将立方域分解为 也是立方 8 个子域 这些子域按 8 个等级独立计算 每个 MPI 等级都会为每个时间步生成一个 VTK 文件 并且由于我使用的是 ParaView 所以我希望将整个事物可视化为一
  • OpenACC + MPI Fortran 程序入门

    我有一个工作串行代码和一个通过 OpenACC 并行化的工作并行单 GPU 代码 现在我尝试通过在多个 GPU 上运行 采用 mpi openacc 范例来增加并行性 我用 Fortran 90 编写代码 并使用 Nvidia 的 HPC
  • OpenMP 中可重用的私有动态分配数组

    我正在使用 OpenMP 和 MPI 来并行化 c 中的一些矩阵运算 一些对矩阵进行操作的函数是用 Fortran 编写的 Fortran 函数需要传入一个缓冲区数组 该数组仅在函数内部使用 目前 我正在每个并行部分中分配缓冲区 类似于下面
  • 在 Eclipse Indigo 中运行 MPJ Express 时出现“未解决的编译问题”

    我遵循了 Youtube 上关于如何在 IDE 中使用 MPJ Express 运行并行应用程序的教程 我下载了最新版本的 MPJ Express 并使用了 Eclipse Indigo 我确实在我的项目 JAR 文件中包含了 MPI 当我
  • 在我的笔记本电脑上运行 MPI 代码

    我是并行计算世界的新手 你能告诉我是否可以在我的双核笔记本电脑上使用 MPI 例程运行 C 代码 或者是否有任何模拟器 仿真器可以做到这一点 大多数 MPI 实现使用共享内存在位于同一主机上的队列之间进行通信 设置笔记本电脑不需要任何特殊操
  • 居委会集体——减少运营

    我需要 allreduce MPI Ineighbor allreduce 来进行 MPI 中的集体通信 遗憾的是它尚未包含在内 明显但效率不高的解决方案是使用 MPI Neighbor alltoall 以增加缓冲区大小为代价 您有什么建
  • 在 C++ 中使用 MPI 对数组进行排序

    我想使用 MPI 库对随机数数组进行排序 这个想法是使用 MPI Scatterv 切割数组并将其发送到进程 每个进程都应该在本地对其数据量进行排序并将其发送回主进程 MPI Gatherv 主进程应该对部分排序的表进行排序 合并 如果最后
  • 使用 MPI_Gather openmpi c 收集字符串

    我想为每个进程生成一个字符串 然后收集所有内容 但是每个进程中创建的字符串是通过附加整数和字符来创建的 我仍然无法正确收集所有内容 我可以一一打印所有部分字符串 但如果我尝试打印 rcv string 我只会得到一个部分字符串 或者可能会出
  • 如何将 ltrace 用于 mpi 程序?

    我想知道如何使用 ltrace 获取 mpi 应用程序的库函数调用 但 ltrace 不起作用 我的 mpirun 无法成功 任何想法 您应该能够简单地使用 mpiexec n 4 other mpiexec options ltrace
  • MPI_Bsend 的缺点?

    我最近遇到了一个死锁 我可以通过使用来解决MPI Bsend代替MPI Send 如果我理解正确的话 MPI Bsend 是一个非阻塞发送 并且可以安全地修改我发送的内容 而不必担心发送操作何时完成 所以 double x 1 MPI Bs
  • SLURM:如何在同一计算节点或不同节点上并行运行不同的可执行文件?

    Goal 了解如何通过 sbatch 作业提交来运行 共同调度或执行可执行文件 应用程序 使用 srun 或 mpirun 研究 代码片段 bin bash SBATCH job name LEBT SBATCH partition ang
  • 为什么 Hadoop 不使用 MPI 来实现?

    如果我错了 请纠正我 但我的理解是 Hadoop 不使用 MPI 进行不同节点之间的通信 造成这种情况的技术原因是什么 我可以冒险进行一些猜测 但我对 MPI 是如何 在幕后 实现的了解不够 无法知道我是否正确 想想看 我对 Hadoop
  • MPI_Send() 和 MPI_Ssend() 之间的区别?

    I know MPI Send 是一个阻塞调用 它会等待直到可以安全地修改应用程序缓冲区以供重用 为了使发送调用同步 应该与接收者握手 我们需要使用MPI Ssend 我想知道两者之间的区别 假设我需要在进程之间发送固定数量的字节 哪一个应
  • 使用 MPJ Express 发送对象

    我是并行编程的新手 我想用 java 来完成它 我想知道是否可以通过 MPI 发送和接收更复杂的对象 我用的是 MPJ Express 然而 每当我想发送一个对象时 我都会收到 ClassCastException MPI Init arg
  • 如何通过 mpi c++ 发送布尔数据类型?

    我是 C 新手 尝试通过 MPI 发送 bool 数据类型 但 C 不支持此数据类型 我试着做到了MPI BYTE and MPI INT但它什么也没打印 include
  • MPI mpirun execvp 错误:没有这样的文件或目录

    我正在尝试使用 MPI 运行 C 代码 BCparallel cpp 编译代码 mpic BCparallel cpp o BCparallel 很成功 但是当我通过这条线时 mpiexec np 4 BCparallel file txt
  • MPI Alltoallv 还是更好的单独发送和接收? (表现)

    我有许多进程 大约 100 到 1000 个 每个进程都必须将一些数据发送到其他一些进程 比如大约 10 个 通常 但并非总是必要 如果 A 发送到 B B 也会发送到 A 每个进程都知道它必须从哪个进程接收多少数据 所以我可以用MPI A
  • 了解多个进程的并发文件写入

    从这里 UNIX 中文件追加是原子的吗 https stackoverflow com questions 1154446 is file append atomic in unix 考虑多个进程打开同一个文件并向其追加内容的情况 O AP
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数

随机推荐

  • 如何放置我的网页以便我可以在谷歌搜索中找到我的页面? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何上传我的网页以便我可以在 Google 搜索中找到我的网页 搜索引擎优化可能是一个耗时的过程 但其中有几个因素 您的网站应该具有良好的关键字丰富的
  • 在Python中将命名列表向量从R翻译成rpy2?

    python 中的 Rpy2 中的以下 R 代码相当于什么 Var1 c navy darkgreen names Var1 c Class1 Class2 ann colors list Var1 Var1 目前尚不清楚是什么ann co
  • php ssh2_exec 不执行“su”命令

    我在 php 的 ssh2 中获得了很多乐趣 我正在通过 ssh ing 进入 localhost 运行 ubuntu 进行测试 我已经成功地使用我的用户名 而不是 root 进行连接和身份验证 并且一些命令 例如 ls 返回一些信息 这是
  • 单击 iAd 时暂停 SpriteKit 场景

    我正在研究一个SpriteKit项目 我正在努力在点击 iAd 时暂停游戏 并在点击 iAd 时取消暂停iAd被解雇 主要问题是从 ViewController 暂停场景 我知道如果我想从 ViewController 暂停场景Scene
  • 使用子进程时如何限制程序的执行时间?

    我想使用子进程来运行程序 并且需要限制执行时间 例如 如果它运行超过2秒我想杀死它 对于普通程序 kill 效果很好 但如果我尝试跑步 usr bin time something kill 并不能真正杀死程序 我下面的代码似乎不能很好地工
  • 谷歌表格。如何获取实际范围大小(以像素为单位)

    我的脚本将选定的范围转换为图像 请参见 https docs google com spreadsheets d 1qNQ6iCMoBCQgJzBB63ymtBQ6BedXZFhjgZZKGItjeVA copy 它首先创建一个公共 PDF
  • 远离 CSS 的抽象

    许多框架试图从 HTML 自定义标签 JSF 组件系统 中抽象出来 以便更轻松地处理特定的问题 你们使用过的东西中是否有类似的 CSS 概念 它可以为你带来很多跨浏览器的魔力 支持类似的变量 为什么我每次想要那种颜色时都必须输入 3c5c8
  • 用点或连字符填充标签之间的可用空间

    我有一个带有标签的页面 这些标签包含在 div 中 标签有一个变量 我想用字符 点或 填充两者之间的空格 例如 我的标签文本 1 这里有一些文本 我的文字2 另一篇文字 如果您发现两个文本都是合理的 或者至少我尝试过 则可能是字符计数问题
  • Android 7 中的 ContextMenu 位置混乱

    我有一个应用程序 其中有一个简单的列表视图和上下文菜单 Android 7 之前的版本 一切看起来都正常 when clicking an item at the bottom of the list when clicking an it
  • 这些奇怪的环境变量是什么?

    I use GetEnvironmentString 获取程序的环境变量 每个程序的第一个结果都是这样的 我不知道这是什么意思 这是代码 LPWCH lpEnvString GetEnvironmentStringsW LPWSTR lps
  • 通过 Chrome 的自定义选项卡发布数据

    我想通过 CustomTab 或 Chrome 发送 POST HTTP 请求 然后最终显示页面 我进行了很多研究 但没有办法 有办法吗 可以通过 Volley 发送 POST 请求然后最终在浏览器中显示响应吗 我为此写了一个解决方法 小心
  • Wireshark 中以太网帧末尾的 0 字节是什么?

    after ARP protocol in a frame there are many 0 bytes Does anyone know the reason for the existence of these 0 bytes 检查以太
  • 将所有数据从一个订阅传输到另一订阅

    如何将我的所有云服务 数据库 虚拟机和 Blob 存储转移到我新订阅的另一个订阅 有没有更简单的方法 更新 2016 年 6 月 6 日 这个答案相当旧了 必须寻求 Azure 支持才能将数据从一项订阅传输到另一项订阅 此外 Azure 门
  • 如何从 bigcommerce API(地面、快递)获取订单“送货方式”?

    如何从 bigcommerce API 地面 快递 获取订单 送货方式 客户下订单时选择的运输方式 Thanks 参考这个page https developer bigcommerce com api stores v2 orders s
  • ECMAScript 规范:规范中问号的含义

    我见过很多这样的情况Let value be Return sth在规范中 example https tc39 github io ecma262 sec tonumber 有谁知道 的含义是什么 From 算法约定 http www e
  • 在 C# 中从字符串调用函数

    我知道在 php 中你可以进行如下调用 function name hello function name function hello echo hello 这在 Net 中可能吗 是的 您可以使用反射 像这样的事情 Type thisT
  • 同一页面上有多个 iScroll 元素

    我正在使用 jQtouch 和 iScroll 制作一个移动网站 我不想使用 iScroll 获得多个可滚动区域 但只有列表可以使用 iScroll 我尝试过这个 var scroll1 scroll2 function loaded sc
  • Spark 抛出 java.util.NoSuchElementException:找不到密钥:67

    在 Zeppelin 中运行 Spark 平分 kmmeans 算法 I transform my data using the TF IDF algorithm val idf new IDF minFreq fit data val h
  • 在 Python OpenCV 4.2.0(2020 年)中使用 SIFT(或替代方案)

    我正在尝试使用 SIFT 与 Python 进行特征检测 但它不再是 OpenCV 的一部分orOpenCV 贡献 使用 OpenCV opencv contrib python 两个版本 4 2 0 34 这个问题的最新版本 我得到 gt
  • MPI_Bsend 的缺点?

    我最近遇到了一个死锁 我可以通过使用来解决MPI Bsend代替MPI Send 如果我理解正确的话 MPI Bsend 是一个非阻塞发送 并且可以安全地修改我发送的内容 而不必担心发送操作何时完成 所以 double x 1 MPI Bs