- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让每个进程都以这种方式广播到所有其余进程
#include "mpi.h"
#include <stdio.h>
int main(argc,argv)
int argc;
char **argv;
{
int MyProc, size,tag=1;
int msg_recpt;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &MyProc);
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("Process # %d started \n", MyProc);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Bcast( &MyProc, 1, MPI_INT, MyProc, MPI_COMM_WORLD);
MPI_Recv(&msg_recpt, 1, MPI_CHAR, MyProc, tag, MPI_COMM_WORLD, &status);
printf("Proc #%d recv'd message from Proc #%d \n", MyProc, msg_recpt) ;
printf("Finishing proc %d\n", MyProc);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
}
我需要在MPI_Recv
之后显示消息上的发送进程,但我认为它已被阻止,执行未到达printf("Finishing proc %d\n", MyProc) ;
最佳答案
MPI_Bcast()
是一个集体操作。通信器中的所有 MPI 任务必须使用匹配的签名(例如计数和数据类型)调用它,并且它们必须全部使用相同的root
任务。
您的代码可能会在 MPI_Bcast()
中阻塞(由于消息非常小,因此这种情况不太可能发生,但您不应认为这是理所当然的)。如果没有,它肯定会在 MPI_Recv()
中阻塞,因为没有匹配的发送操作。
集体操作和点对点操作在 MPI 中是独立的。
您要么需要一个MPI_Bcast()
循环,要么如果您有足够的内存来接收所有级别的消息,您可以使用一次MPI_Alltoallv()
。
关于c - MPI_Bcast 所有进程发送到所有其余进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53360390/
所以我有一些代码,我使用 MPI_Bcast 将信息从根节点发送到所有节点,但我想让我的 P0 将数组块发送到各个进程。 如何使用 MPI_Send 和 MPI_Receive 执行此操作? 我以前从
我正在尝试在二维数组中广播我的第一行。这是代码: double *chunkPtr = malloc(sizeof(double) * columns); if (rank == 0) { c
我正在尝试 MPI,当我在命令行上通过 mpirun 运行它时,我不断收到此错误。 ----------------------------------------------------------
我按照 Jonathan 的代码从这里 ( MPI_Bcast a dynamic 2d array ) 到 MPI_Bcast 动态分配的二维结构数组。结构如下: typedef struct {
我试图让每个进程都以这种方式广播到所有其余进程 #include "mpi.h" #include int main(argc,argv) int argc; char **argv; { in
我收到 MPI_Bcast 错误(我认为这是一个旧错误)我不确定为什么会这样。错误如下: An error occurred in MPI_Bcast on communicator MPI_C
我在使用 MPI_Bcast 时遇到问题。一个处理器初始化类,然后必须将其发送给其他处理器。这是我的课: class A{ private: unsigned rows, cols; std::vec
我正在使用 MPI 并行乘以两个矩阵(二维数组),方法是将行平均划分并将它们分散在子进程中。主人也处理一大块行。我了解如何执行此操作并使用 MPI_Send/MPI_Recv 成功完成,但现在我正在尝
我试图在一台计算机上输入一个数字,然后使用 MPI 将其广播到所有其他计算机。 #include #include #include "mpi.h" int main (int argc, cha
这个问题在这里已经有了答案: Using MPI_Bcast for MPI communication (2 个答案) 关闭 7 年前。 我使用 MPI_Bcast 函数编写了简单的 MPI 程序
我有以下问题,我正在尝试发送 2 种类型的数据,1 种 int 和 2 种字符,这是我程序的一部分 #define Send(send_data, count, type, dest, tag) MP
我是 Open MPI 的新手,我正在尝试使用它来运行一个使用字典攻击的强力密码破解器(我实际上并不是在破解密码,这只是一个练习)。我使用的字典是 vector其中单词由空终止符分隔。 使用 MPI_
我正在尝试将带有 bcast 的动态二维数组传递给所有级别。我有以下代码。 #include #include int main(int argc, char **argv) { fl
我正在广播一个指向数组的指针 MPI_Bcast(&xd_sim_send, Nooflines_Sim, MPI_FLOAT, root, MPI_COMM_WORLD); 来自进程 0 并从 0
为什么这段mpi代码没有发生死锁? int main(int argc, char *argv[]) { int rank,size; MPI_Init(&argc,
调用 MPI_BCAST 时,是否有隐含的同步?例如,如果发送方进程要在其他人之前到达 MPI_BCAST,它是否可以执行 BCAST,然后在没有任何确认的情况下继续?最近的一些测试代码如下: pro
MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) 此函数不需要等级参数。它如
我知道这段代码是正确的 #include #include "mpi.h" int main(int argc, char * argv[]){ int my_rank, p, n;
是 MPI_Bcast()阻塞还是非阻塞?换句话说,当根发送数据时,是否所有处理器都阻塞,直到每个处理器都收到该数据?如果没有,如何同步(阻止)所有这些,以便在所有接收到相同数据之前没有人继续。 最佳
我正在尝试 MPI_Bcast 将消息广播到多个节点,但遇到段错误,有时错误:139 或错误:255。以下是我的代码: char proposal[20]; char rep; int size, r
我是一名优秀的程序员,十分优秀!