- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
int main(int argc, char* argv[])
{
int rank, size;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
MPI_Request mpiRequest;
MPI_Status myStatus;
int tag = 11;
int testData = 12;
MPI_Isend(&testData,1,MPI_INT,(rank+1)%size,tag,MPI_COMM_WORLD,&mpiRequest);
MPI_Wait (&mpiRequest,&myStatus);
int source = (rank+size-1)%size;
int sizeProb = MPI_Probe(source,tag,MPI_COMM_WORLD,&myStatus);
int * recvTransferArray = new int [sizeProb];
MPI_Recv(recvTransferArray,sizeProb,MPI_INT,source,tag,MPI_COMM_WORLD,&myStatus);
MPI_Finalize();
return 0;
}
最佳答案
事实sizeProb
永远是0是件好事! MPI_Probe()
返回一个错误代码,意思是 MPI_SUCCESS
在你的情况下。要检索其他进程发送的数组的大小,您可以使用 MPI_Get_count(&myStatus, MPI_INT, &sizeProb);
两个链接:
MPI_Get_count()
http://www.mpich.org/static/docs/v3.1/www3/MPI_Get_count.html #include "mpi.h"
int main(int argc, char* argv[]) { int rank, size;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
MPI_Request mpiRequest;
MPI_Status myStatus;
int tag = 11;
int testData = rank;
MPI_Isend(&testData,1,MPI_INT,(rank+1)%size,tag,MPI_COMM_WORLD,&mpiRequest);
MPI_Wait (&mpiRequest,&myStatus);
int source = (rank+size-1)%size;
MPI_Probe(source,tag,MPI_COMM_WORLD,&myStatus);
int sizeProb;
MPI_Get_count(&myStatus, MPI_INT, &sizeProb);
int * recvTransferArray = new int [sizeProb];
MPI_Recv(recvTransferArray,sizeProb,MPI_INT,source,tag,MPI_COMM_WORLD,&myStatus);
std::cout<<"proc "<<rank<<" received "<<sizeProb<<" int, first being "<<recvTransferArray[0]<<std::endl;
MPI_Finalize();
return 0;
}
关于mpi - 数据传输问题 : MPI_Isend followed by MPI_Probe and MPI_Recv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842118/
在MPI_Iprobe中,需要多次检查标志位才能真正找出是否有任何消息,一种方法是将其放入while循环中,我想知道这种方法是否等同于MPI_Probe因为基本上它以不同的方式阻止了探测,这是使用 I
我需要使用 MPI_Bcast() 在 MPI 中实现一个简单的代码。我想通过使用 MPI_Probe() 使其更有用,这样我就不必每次都手动将消息大小写入 MPI_Recv()。 我习惯使用 MPI
我正在使用 MPI_Probe动态发送消息(接收者不知道正在发送的消息的大小)。我的代码看起来有点像这样 - if (world_rank == 0) { int *buffer = ...
我需要用 MPI_Send() 发送我自己的结构。问题是,我不确定如何正确使用 MPI 中的结构。当然我也尝试过自己找,但是我还没有找到完全符合我需要的例子。 现在,当我运行 Makefile 时,出
我有以下代码 int main(int argc, char* argv[]) { int rank, size; MPI_Init (&argc, &argv); MP
我是一名优秀的程序员,十分优秀!