0
我正在做一個使用C和MPI的應用程序,通過矩陣乘法產生一個向量,但是我一直有錯誤發佈readv等錯誤,並且現有連接被強制關閉遠程主機(10054) 下面是代碼:一個現有的連接被遠程主機強制關閉 - MPI
#include "stdio.h"
#include "mpi.h"
#define W 5
#define H 5
void make_matrix(int[]);
void make_vector(int []);
void main(int argc, char* argv[])
{
int myrank,size,k;
int matrix[H*W];
int vec[W];
int res[W];
static int col_count = 0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
MPI_Comm_rank(MPI_COMM_WORLD,&size);
MPI_Bcast(vec,W,MPI_INT,0,MPI_COMM_WORLD);
if(myrank != 0)
{
for(k=0; k<W; k++)
{
vec[k]+= matrix[k*W+col_count];
}
col_count++;
printf("%d ",vec[col_count]);
}
MPI_Finalize();
}
void make_matrix(int a[])
{
int i;
for(i=0; i<H*W; i+=1)
{
a[i] = i;
}
};
void make_vector(int v[])
{
int i;
for(i=0; i<H; i++)
v[i] = i*2;
};
謝謝你的回答,我做了你告訴我的,但我沒有錯誤,但答案是不正確的。我刪除了MPI_Bcast有條件的myrank,但是在計算值時我使用了...是否正確?我將編輯上面的代碼.... – mahmoud 2012-03-06 20:11:10
@mahmoud我不確定你想要完成什麼。我的答案解決了您的溝通錯誤。你的代碼中可能有很多其他問題,但我不知道你的目標是什麼;這是一個完全不同的問題。 – chrisaycock 2012-03-06 20:22:14
還有一個關於溝通的問題,是否正確地處理了除了根之外的所有處理單元所做的任何計算,還是應該涉及到根? – mahmoud 2012-03-06 20:38:08