web-dev-qa-db-ja.com

MPI)を使用してコマンドラインから引数を渡す

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に不慣れであるということだけです。

私がどこで間違っているのか提案できますか?

19
freshmaster
#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を使用してください。

0
Manjunath s