MPI呼び出しを使用して、c ++を使用して複数のプロセスでプロシージャを実行しています。Main関数の最初の数行は次のようになります。
int main(int argc, char *argv[]){
int comm_sz;
int my_rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
x = atoi(argv[4]);
y = atoi(argv[5]);
今、私がプログラムを実行して実行すると、
mpiexec -n 1 program 10 10
Xとyには、渡される4番目と5番目の引数であるため、値10と10を割り当てたいと思います。しかし、これは発生しておらず、それに応じてこれらの変数を0と0に割り当てます。そして私のプログラムは望み通りに実行されません。
これらの番号を変更すると、シリアルコードが実行されます。それは私がMPIに不慣れであるということだけです。
私がどこで間違っているのか提案できますか?
#include<stdio.h>
#include<mpi.h>
int main(int argc, char *argv[]){
int comm_sz;
int my_rank;
int x,y;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
x = atoi(argv[1]);
y = atoi(argv[2]);
printf("%d,%d\n",x,y);
}
これを試してください。MPIプログラム名の後の引数を検討するため、引数として1と2を使用してください。