关于 MPI_Reduce

2024-01-05

就一个问题。如果我使用函数 MPI_Reduce,当这是一个动态数组时,只有根可以分配接收缓冲区?例如:

int r = 10;
int *yloc, *y;
...
yloc = calloc(r*sizeof(int)); // for all processes

if (I'm the master process) {
    y = calloc(r*sizeof(int))  // inside the if-block ...
    ...
}
y = calloc(r*sizeof(int))  // ...or outside the if-block?
...
MPI_Reduce(yloc, y, r, MPI_FLOAT, MPI_SUM, ROOT, MPI_COMM_WORLD);

什么是正确的? if 块内部还是外部?提前致谢。


两者都是正确的。但我想你想要的答案是无论是否y是有效的内存地址仅对根进程重要MPI_Reduce()称呼。因此,除了根进程之外,无需为任何其他进程分配内存。

为了完整起见,这里摘录MPI_Reduce的手册页,我们可以在其中看到接收缓冲区仅对根进程有意义:

NAME
       MPI_Reduce -  Reduces values on all processes to a single value

SYNOPSIS
       int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
                      MPI_Op op, int root, MPI_Comm comm)

INPUT PARAMETERS
       sendbuf
              - address of send buffer (choice)
       count  - number of elements in send buffer (integer)
       datatype
              - data type of elements of send buffer (handle)
       op     - reduce operation (handle)
       root   - rank of root process (integer)
       comm   - communicator (handle)

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

关于 MPI_Reduce 的相关文章

随机推荐

  • Nodejs、TypeScript、ts-node-dev 和顶级等待

    在需要顶级等待之后 我现在花了一个小时寻找新错误的解决方案 到目前为止我尝试过的所有其他内容都没有解决错误 例如添加 type module 到 package json 文件 错误消息是Cannot use import statemen
  • .wav 和 .gsm 文件格式有什么区别

    我正在学习星号 在此我曾使用过语音邮件应用程序 当我尝试播放语音邮件时 我看到了以下格式的文件 wav WAV gsm 以上文件格式有什么区别 有信息关于星号维基 http www voip info org tiki index php
  • 如何在 T-SQL 中转义百分号?

    This 问题也有答案 https stackoverflow com questions 700648 escape percentage sign db2 sql 但它特别提到了 DB2 我如何搜索string using LIKE已经
  • 无法使用selenium webdriver + firefox下载PDF

    我有一个 selenium 脚本 作为其执行的一部分 需要下载 PDF 并且下载是必要的 因为稍后会使用 PDF 我已经使用配置文件首选项方法来下载文件 这在我用于开发的虚拟机上运行良好 但是当将脚本移动到实时服务器时 它似乎不想下载所需的
  • 应用程序因 EXC_BREAKPOINT 错误而崩溃

    我正在 Xcode 7 2 中制作一个应用程序 我有一个带有按钮的主菜单 该按钮有一个转到设置视图控制器的序列 设置视图控制器具有以下代码 每次我到达该视图控制器时 它都会因 EXC BREAKPOINT 错误而崩溃 有趣的是 这种情况只发
  • 如何修复调试中的 ClassNotFoundException: kotlinx.coroutines.debug.AgentPremain?

    我正在运行几个项目作为 Spring Boot 应用程序 其中一个项目特别无法启动并抛出 java lang ClassNotFoundException kotlinx coroutines debug AgentPremain at j
  • 最先进的 Java EE 调试和监控工具

    多年来我第一次深入研究 Java EE 我正在寻找有关 Java EE 调试和监视工具的建议 IDlike找到一个可以让我动态探索线程空间等的工具 我主要使用 Tomcat update 和 Java 5 老鼠 如果您无法使用VisualV
  • 选择表中除表标题行之外的行

    如何使用jquery选择html表格中除表格标题行之外的行 table thead tr th Foo th td Lorem td td Ipsum td tr thead tr th th tr table
  • 如何使用 angularjs 输入文本并渲染 html?

    我想将文本框绑定到 angularjs 变量 并让它在单独的 div 中输出渲染的 html I have div div
  • 我们可以将 Github mac 应用程序与 GitLab 一起使用吗?

    我喜欢 GitHub Mac 应用程序 我通过我的 GitHub 帐户使用它 我加入了一个 GitLab 项目 我想知道是否可以将 GitHub 应用程序与 GitLab 存储库一起使用 我找到了一个post https stackover
  • 作为特定复杂类型扩展的任何类型元素的 xsd 序列

    基本上 如果这是 NET 它会看起来像这样 ISomething string A get int B get var somethings new List
  • Canvas.drawArc() 工件

    我在自定义视图中在画布上绘制圆弧 如下所示 Paint and rectangle被定义在外部onDraw 并为了简单起见添加到其中 protected void onDraw Canvas canvas super onDraw canv
  • javascript: 有没有可以测试网速的JS?

    我将测试我的网站速度 主要是网络服务器延迟 总结一下我想要实现的目标 1 在我的网站上托管一个带有javascript的网页 http myweb com test speed html 2 我把这个网址给我的朋友 3 他们不需要做任何事情
  • 添加(不是合并!)两个行和列不相等的数据框

    我想有效地对两个数据框的条目进行求和 尽管不能保证数据框具有相同的维度或列名称 合并并不是我真正想要的 相反 我想创建一个输出对象 其中包含属于任一添加的数据帧的所有行名称和列名称 在该输出的每个位置 我想对计算值使用以下逻辑 如果行 列配
  • 如何在构建工件后运行脚本

    我正在使用 Idea 做一个小型 LeJOS 项目 一切都很好 除了我希望在编译工件后将准备好的 jar 直接传输到我的 EV3 程序块上 我有一个现成的脚本 我现在从命令行手动启动它 但是 嘿 这是21世纪了 如何让 Idea 在构建工件
  • 模拟私有财产

    假设我们有一个这样的类 class Whatever private var something false fun aMethod Int return if something 1 else 0 根据文档 http mockk io p
  • yii2 中文件未上传

    我想上传图像并将其保存到我的数据库中 这里 数据库中的字段名称是image path 当我尝试上传图像时 它显示错误 调用成员函数saveAs 在线上的非对象上 customer gt file gt saveAs uploads cust
  • EntityFrameworkCore:如何在用户第一次使用应用程序时初始化数据库并为其提供种子

    我使用 Microsoft Visual Studio 2015 和 EntityFrameworkCore 构建了一个项目 我手动播种了一些虚拟数据 并且正在开发我的解决方案 现在 我想将其部署在服务器中 但我遇到的问题是 第一次启动应用
  • java.sql.Timestamp 的 Vaadin 转换器

    我正在使用 PostgreSQL 数据库 时间戳列具有 java sql Timestamp 类 即使此类扩展了 java util Date 当我编辑 PopupDateFiels 时 我也会收到错误 无法将 java util Date
  • 关于 MPI_Reduce

    就一个问题 如果我使用函数 MPI Reduce 当这是一个动态数组时 只有根可以分配接收缓冲区 例如 int r 10 int yloc y yloc calloc r sizeof int for all processes if I