- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 MPI_Bcast 时遇到问题。一个处理器初始化类,然后必须将其发送给其他处理器。这是我的课:
class A{
private:
unsigned rows, cols;
std::vector<int> elem;
public:
//default costructor
A(): rows(1), cols(1), elem(1,0){
}
//costructor
A(unsigned r, unsigned c):
rows(r), cols(c){
elem.resize(rows*cols);
for(unsigned i=0; i<rows*cols; i++)
elem[i]=i+1;
}
//return the address of an element
int* give_address(unsigned i){
return &elem[i];
}
//destructor
~A(){}
};
这就是我主要做的事情:
int main(int argc, char **argv){
MPI_Init(&argc, &argv);
int rank, np;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&np);
A a;
if(np==1){
std::cout<< "Only one!" << std::endl;
}else{
if(rank==0){
a=A(3,3);
}
MPI_Bcast(a.give_address(0),3*3,MPI_INT,0,MPI_COMM_WORLD);
}
MPI_Finalize();
return 0;
}
但是 Bcast 不起作用,并给出了段错误!不知道哪里出了问题...
最佳答案
如果处理器秩不为 0,则矩阵 a 的大小为 1x1。处理器 1、2、3... 的缓冲区无法容纳处理器 0 广播的所有数据。您必须将 a 初始化为在其他处理器上也具有适当的大小。
编辑:为了更清楚,接收处理器上的 a.give_address(0) 指向的数组必须至少具有大小计数(在您的情况下计数为 3*3)。
关于C++ MPI_Bcast 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541293/
所以我有一些代码,我使用 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
我是一名优秀的程序员,十分优秀!