Używam wywołań MPI do uruchomienia procedury na wielu procesach przy użyciu C++. Pierwszych kilka linii w moich głównych funkcji wyglądać następująco:Przekazywanie argumentów za pośrednictwem wiersza polecenia przy użyciu MPI
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]);
Teraz kiedy wykonać i uruchomić mój program za pomocą
mpiexec -n 1 program 10 10
Chcę x i y mają być przypisane wartości 10 i 10, jak są to 4 i 5 argumenty przekazane. Ale tak się nie dzieje i przypisuje te zmienne odpowiednio do 0 i 0. a mój program nie działa zgodnie z oczekiwaniami.
Mam mój kod seryjny uruchomiony po zmianie tych numerów. Po prostu jestem nowy w MPI.
Czy możesz zasugerować, gdzie się mylę?
Czy próbowałeś po prostu wydrukować zawartość 'argv'? Jaki jest wynik? – suszterpatt
Zrobiłem. Kiedy wydrukowałem zawartość tablicy, rozpoznałem dwa argumenty 10, 10, ale nie na pozycjach 4 i 5. – freshmaster
Wydaje się, że czyta się je jako argv [1] i argv [2]. Rozwiązałem mój problem tak, ale chciałem wiedzieć, dlaczego tak się dzieje. Nie rozumiem dokładnie MPI_Init. – freshmaster