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
@mahmoud私はあなたが達成しようとしているか分かりません。私の答えはあなたのコミュニケーションエラーを解決します。あなたのコードには他にも多くの問題があるかもしれませんが、あなたの目標が何であるか分かりません。それはまったく異なる質問です。 – chrisaycock
ちょうど1つの質問、通信について、ルートを除いてすべての処理単位で何をしているのかを処理するのは正しいですか? – mahmoud