如何使用 C 在 MPI 中发送(MPI_Send)具有指针字段的嵌套结构

2023-12-11

我有一个结构:

    struct vertex 
    {  
     double a; double b;
    }      

    struct polygon
    {
     int numofVertex;
     vertex *v;
    }

如何使用 MPI_Send 在 MPI 中发送此嵌套结构? 问题是该结构包含指针字段“v”,因此 MPI_Send 崩溃。 我尝试过 MPI_Datatype 来定义新的数据类型,但它不起作用。 我读到序列化是唯一的解决方案,但 C 没有提供这样的实现。 有什么建议如何解决这个问题吗?


您必须通过两条消息发送它:

// 'p' is a pointer to your polygon
vertex *tmp = p->v;
p->v = NULL;
MPI_Send(p, sizeof(struct polygon), MPI_BYTES, dest, 1, ...);
MPI_Send(tmp, sizeof(struct vertex), MPI_BYTES, dest, 2, ...);
p->v = tmp;

在接收端,您只需通过两个步骤接收结构:

polygon p;
MPI_Recv(&p, sizeof(struct polygon), MPI_BYTES, src, 1, ...);
p.vertex = malloc(sizeof(struct vertex));
MPI_Recv(p.vertex, sizeof(struct vertex), MPI_BYTES, src, 2, ...);

显然这不是很好,所以如果你保持结构指针较少,这样你就可以立即发送它,这会更容易。

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

如何使用 C 在 MPI 中发送(MPI_Send)具有指针字段的嵌套结构 的相关文章

随机推荐

  • 使用 C 解析 URL 的最佳方法?

    我有一个像这样的网址 http 192 168 0 1 8080 servlet rece 我想解析 URL 来获取值 IP 192 168 0 1 Port 8080 page servlet rece 我怎么做 就我个人而言 我偷了HT
  • 除了在每次闭包之前克隆它之外,还有其他选择在多个闭包中共享 Arc 吗?

    我有这样的事情 use std sync Arc fn main let arc Arc new 42 move arc clone move arc clone 我正进入 状态 error E0382 capture of moved v
  • 如何实现标签系统

    我想知道实现标签系统的最佳方法是什么 就像 SO 上使用的那样 我正在考虑这个问题 但我无法想出一个好的可扩展解决方案 我正在考虑有一个基本的 3 表解决方案 有一个tags桌子 一个articles桌子和一个tag to articles
  • number_in_month 练习(SML 中多个列表的迭代)

    我在 SML 中有两个列表 假设列表 A a b c d e f 和列表B b e 我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数 输出应该是 2 因为b and e每个在 A 中出现一次 到目前为止 这是我的代码 但是
  • Blogger 主题的下一个和上一个按钮

    这可能需要花费很多时间 并且可能是一个很难回答的问题 但请帮忙 我有一个博主博客 这是一个阅读日本漫画的博客 这个博客的主题实际上是在未完全开发的情况下发布的 我下载并应用了它 尽管我几乎完成了必要的地方的编码 但仍然遗漏了一些问题 其中一
  • 如何在不使用数据透视的情况下在 SQL 中将行转换或转置为列?

    我在 SQL 中转置数据时遇到一个问题 例如下面给出的表格 id source name value 1 cp x 1 cp y 1 hi a 2 li b 2 cp c 2 li d 3 li e 我需要以下格式的表格 转置但带有字符串聚
  • 通过 XML 文件*和*代码配置 log4net 附加程序

    我今天开始使用 log4net 到目前为止 我真的很喜欢它 为了保留我们当前的日志记录功能 应用程序需要在应用程序启动时创建一个新的日志文件 日志文件名中包含编码的日期和时间戳 目前 我已经通过以下方式配置了 log4netXmlConfi
  • 带大括号的正则表达式

    我有以下字符串 blabla blabla xyzxyz blabla 什么是正确的正则表达式匹配模式来分隔大括号中的内容并将其放入数组中 我正在使用 RegExKitLite 和 Objective C 我将非常感谢你的帮助 好的 我刚刚
  • 调用返回相同类型且与类型本身相同名称的变量的静态方法时,“变量 xxx 可能尚未初始化”

    为什么会失败并出现如下所示的错误 我不确定在 JLS 中哪里可以找到执行此类操作的限制 public class A static A foo return null public static void main String args
  • BeautifulSoup4 stripped_strings 给我字节对象?

    我试图从块引用中取出文本 如下所示 blockquote class postcontent restore 01 Oyasumi br 02 DanSin br 03 w t s br 04 Lovism br 05 NoName br
  • 系统V ABI的红区是如何实现的

    编译器如何确保红色区域不被破坏 是否存在空间过度分配的情况 是什么因素导致选择128字节作为红色区域的大小 编译器不会 它只是利用担保的RSP 以下的空间不会异步地被破坏 例如被信号处理程序破坏 进行函数调用当然会同步破坏它 事实上 在Li
  • 如何使用ggplot2的x轴日期注释?

    我在理解之间的区别时遇到问题geom segment and annotate segment 当涉及到带有日期的绘图时x axis 让我们从一些随机数据开始 library data table library lubridate lib
  • 如何垂直居中对齐未知高度的浮动元素?

    我有一个 水平 居中的外部 div 其中包含两个宽度未知的元素 div style width 100 margin 0 auto div div div div div 默认情况下 两个浮动都是顶部对齐的 并且具有变化 未知和不同的高度
  • 以编程方式在运行时获取摘要注释

    我正在寻找一种方法来以编程方式获取 ASP net 中方法的 Xml 注释的摘要部分 我查看了之前的相关帖子 但他们没有提供在网络环境中执行此操作的方法 我无法使用任何第三方应用程序 并且由于网络环境 Visual Studio 插件也没有
  • 当存在无效路径时如何使毕加索显示默认图像

    我在此处显示默认图像名称 R drawable avatar placeholder 时遇到一个问题 当来自Web服务的链接非空 但错误404时 意味着该链接路径上没有任何图像 如果我在下面运行此函数 则会显示字符串 路径不为空 但无法显示
  • Excel:获取单元格颜色

    1 如何使用 Excel 宏获取单元格的颜色 我无法让这个功能工作 Sub BGCol MRow As Integer MCol As Integer bgColor Cells MRow MCol Interior ColorIndex
  • C++:隐藏规则背后的基本原理

    背后的理由是什么隐藏规则 in C class A void f int class B public A void f double B f int is hidden 如果这是一个有意义的功能 我认为也应该可以隐藏函数而无需定义具有相同
  • 在循环期间在值之间优雅地插入空格而无需尾随空格

    有没有一种方法可以在循环期间在值之间优雅地插入空格 或者我想是任何字符或字符串 例如 我想执行以下操作 for int i 0 i lt 6 i System out print i 输出以下内容 0 1 2 3 4 5 但这段代码实际上在
  • 从 NSDateFormatterFullStyle 字符串中删除年份

    我搜索过这个问题 但没有找到结论性且优雅的解决方案 无论如何 是否可以更改 NSDateFormatterFullStyleyear 以抑制年份信息 我正在使用代码 NSString dateDescription NSDateFormat
  • 如何使用 C 在 MPI 中发送(MPI_Send)具有指针字段的嵌套结构

    我有一个结构 struct vertex double a double b struct polygon int numofVertex vertex v 如何使用 MPI Send 在 MPI 中发送此嵌套结构 问题是该结构包含指针字段