mpirun (및 mpiexec)이 내 C 코드에 명령 줄 인수를 전달하지 않는 것처럼 보입니다.mpirun이 명령 줄 인수를 전달하지 않음
명령 줄에서 직접 내 exeutable "도마뱀"을 실행 예상 제공합니다
$ ./gecko -np 2
main:There are 3 arguments:
arg=./gecko
arg=-np
arg=2
그러나에 mpirun을 통해 같은 실행이 다른 :
$ mpirun -np 2 ./gecko
main:There are 1 arguments:
arg=./gecko
MPI_init 의미 (는 argc를, ARGV) 아무튼 함께 일할 인수가 없습니다. 우분투 12.04와 MPICH 2를 함께 사용 중입니다.
왜 이런 일이 일어나지 않는지 알 수 있습니까?
감사합니다.
--------------------------- EDIT ------------------ ---------------
MPI를 초기화 할 수있는 방법은 명령 행 인수를 통해이라고 그물에 많은 예, 예 : : 있습니다
#include <stdio.h>
#include “mpi.h”
int main(int argc, char* argv[])
{
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf(“Greetings from process %i\n”, rank);
MPI_Finalize();
return 0;
}
와 MPI 코드를 실행할 수있는 방법이라고 사용하는 : mpirun이는 C 코드에 인수 NP와 2 단계를 통과하지 못할 경우
mpirun -np 2 ./code_name
그래서, 어떻게 C 코드 이제까지 KN에 도착 않습니다 얼마나 많은 프로세서를 실행해야합니까?
글쎄, 적어도이 일치한다. OpenMPI를 사용하면 일부 프로세스가 인수를 받고 나머지 부분은 수신하지 못하게됩니다 (포트란에서). –
''gecko '에'-np 2'를 전달하려면'mpirun -np 2 ./gecko -np 2'를 사용해야합니다. –
MPI-1은'argc'와'argv'가'MPI_Init'에 전달되어야한다고 요구했습니다. MPI-2는 그 요구 사항을 제거했습니다. 대부분의 예제는 전적으로 역사적인 이유로'MPI_Init (& argc, & argv)를 사용합니다. –