- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图在一台计算机上输入一个数字,然后使用 MPI 将其广播到所有其他计算机。
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main (int argc, char** argv)
{
int myid, numprocs, processor_name_length;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init (0, 0);
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name (processor_name, &processor_name_length);
int number = 0;
if (myid == 0) {
printf ("Input number: ");
scanf ("%d", &number);
}
MPI_Bcast(&number, 1, MPI_INT, 0, MPI_COMM_WORLD);
printf ("Hello from process %d of %d. Number: %d [%s]\n", myid, numprocs, number, processor_name);
MPI_Finalize ();
return 0;
}
当我编译并运行它时:
mpicc -o bcast bcast.c
mpiexec -hosts umaster,uslavea -n 2 ./bcast
它提示我在主机上输入,然后在我输入数字后用 printf 打印此消息,然后它挂起..
输出:
Input number: 10
Hello from process 0 of 2. Number: 10 [umaster]
应该有消息:
Hello from process 1 of 2. Number: 10 [uslavea]
编辑:
如果我使用这个命令运行:
mpiexec -hosts master -n 4 ./bcast
一切正常,我还有另一个示例,我使用 MPI_Send(...)
并且出现连接被拒绝错误,但是如果我在单台计算机上运行该示例,一切正常。我假设我的配置/集群不正常。下一个例子工作正常:
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
int main (int argc, char** argv)
{
int myid, numprocs;
MPI_Init (0, 0);
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
printf ("Hello from process %d of %d.\n", myid, numprocs);
MPI_Finalize ();
return 0;
}
运行它:
mpiexec -hosts master,uslavea,uslaveb,uslavec -n 4 ./hello
我已经创建了 4 个虚拟机,生成了 dsa key ,我可以使用 ssh 从每个虚拟机登录到每个虚拟机而无需输入密码。 (来自主人:例如 ssh mpiuser@uslavea)。在所有机器上,用户都是 mpiuser,每台机器的密码都相同。
可能是什么问题?我重复仅在 master 上使用 -n X
运行它,效果很好。
最佳答案
我想通了。问题是我使用服务器名称而不是 IP 地址。运行它
mpiexec -hosts 192.168.100.100,192.168.100.101,192.168.100.102,192.168.100.103 -n 4 ./bcast
解决问题。
关于c - MPI_Bcasts 卡在奴隶上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344043/
所以我有一些代码,我使用 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
我是一名优秀的程序员,十分优秀!