gpt4 book ai didi

mpi - 使用消息传递接口(interface)发送字符串数组

转载 作者:行者123 更新时间:2023-12-05 01:02:42 27 4
gpt4 key购买 nike

我想使用 Messgae 传递接口(interface) (MPI) 将字符串数组从主线程发送到从线程。
即字符串 [] str = 新字符串 [10]
str[0]= "XXX"...等

如何在避免将此数组中的每个元素作为字符链发送的同时做到这一点?

我成功地在一个发送操作中发送了一个整数数组......但是当它是关于一个字符串数组时我不知道该怎么做

最佳答案

我不懂 Java,但我会给你 C 的答案。但是,这些概念——尤其是解决这个问题的两种方法——在任何语言中都是相同的。

想象一下,如果这是一个简单的 c 字符串(一些字符以 '\0' 结尾)。有两种方法:

  • 过度配置内存并接收到某个限制,
  • 或发送一条消息,指明预期的数据量。

  • 你有最大长度吗? (例如 PATH_MAX 或类似的东西)。如果您不需要每个字节的内存,您可以这样做
    MPI_Send(str, strlen(str), MPI_CHAR, slave_rank, slave_tag, MPI_COMM_WORLD);

    你会把它和
    MPI_Recv(str, MAX_LENGTH, MPI_CHAR, master_rank, slave_tag, MPI_COMM_WORLD);

    如果你不喜欢最后有 slop,你必须在两条消息中做到这一点:
    len=strlen(str) + 1;  /* +1 for the NULL byte */
    MPI_Send(&len, 1, MPI_INT, slave_rank, slave_tag, MPI_COMM_WORLD);
    MPI_Send(str, strlen(str), MPI_CHAR, slave_rank, slave_tag, MPI_COMM_WORLD);

    你会匹配的
    MPI_Recv(&len, 1, MPI_INT, master_rank, slave_tag, MPI_COMM_WORLD);
    payload= malloc(len);
    MPI_Recv(&payload, len, MPI_CHAR, master_rank, slave_tag, MPI_COMM_WORLD);

    关于mpi - 使用消息传递接口(interface)发送字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25974912/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com