gpt4 book ai didi

c++ - 将数据(以字节为单位)发送到 openMPI 中的进程的最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:21 25 4
gpt4 key购买 nike

我是这样做的,假设我需要向根进程发送临时字节数:

var char*;
var=new char[temp];
MPI_Isend(&temp,1,MPI_INT,0,tag,MPI_COMM_WORLD,&request[0]);
MPI_Isend(var,temp,MPI_BYTE,0,tag,MPI_COMM_WORLD,&request[1]);

在根进程上,我正在编写这段代码,

MPI_Recv(&temp,1,MPI_INT,i,tag,MPI_COMM_WORLD,&status[0]);
var=new char[temp];
MPI_Recv(var,temp,MPI_BYTE,0,tag,MPI_COMM_WORLD,&status[1]);

我能够在根进程接收临时数据(要传输的数据字节数)并看到下一部分的截断消息错误?

最佳答案

您不需要将元素数量作为单独的消息发送。 MPI 提供了一种机制,允许程序在接收消息之前查看消息队列并获取消息大小。

发件人:

char *var = new char[temp];
MPI_Send(var, temp, MPI_BYTE, 0, tag, MPI_COMM_WORLD);

接收者:

MPI_Status status;
int temp;
// Probe for matching message without receiving it
MPI_Probe(i, tag, MPI_COMM_WORLD, &status);
// Get the number of data elements in the message
MPI_Get_count(&status, MPI_BYTE, &temp);
char *var = new char[temp];
MPI_Recv(var, temp, MPI_BYTE, i, tag, MPI_COMM_WORLD, &status);

这是通信不同大小数组的最佳方式。

关于c++ - 将数据(以字节为单位)发送到 openMPI 中的进程的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17373525/

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