gpt4 book ai didi

c - MPI - C - 发送数组表现得很奇怪

转载 作者:行者123 更新时间:2023-11-30 17:43:36 25 4
gpt4 key购买 nike

这是在 C 中使用 MPI 的一小段较大代码。我不明白为什么输出是这样的。代码:

int *work=malloc(2*sizeof(int));
work = get_borders(32);

/* Send it to each rank */
printf("Master sending\n w1 %d w2 %d to slave %d\n",work[0],work[1],rank);
fflush(stdout);
MPI_Send(&work, /* message buffer */
2, /* one data item */
MPI_INT, /* data item is an integer */
rank, /* destination process rank */
10, /* user chosen message tag */
MPI_COMM_WORLD);
printf("Check back values...\n w1 %d w2 %d for slave %d\n",work[0],work[1],rank);
fflush(stdout);

上面代码的输出:

Master sending  w1 0 w2  32 to slave 1 Check back values...  w1
2293552 w2 28079928 for slave 1

问题是值 0 和 32 是正确的,但我不明白为什么会有那些长数字。最糟糕的是这些随机数是在 Recv 函数的另一端接收的。我完全不明白——你能解释一下吗?

已添加接收代码

`while (1) {
int wor[2];
/* Receive a message from the master */

MPI_Recv (wor, 2, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
printf("Slave %d recieving from master w1 %d w2 %d\n",rank,wor[0],wor[1]);`

最佳答案

您的问题是,在您的 MPI_SENDMPI_RECV 调用中,您将数据类型定义为 MPI_INT 这解释了为什么它作为整数工作。您需要将其更改为 MPI_DOUBLE 才能使用 double

关于c - MPI - C - 发送数组表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206869/

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