I'm using Intel MPI 5.0 and am making a system call inside my fortran program and it returns different values depending on the env. variable I_MPI_PIN_DOMAIN. Why is that? How do I make it give consistent output?
Sample Fortran (Intel Fortran 13.1) program that can reproduce this:
Program tester call system("cpuinfo|grep 'Packages(sockets)'| & tr -d ' '|cut -d ':' -f 2") stop end
$ mpirun -genv I_MPI_PIN_DOMAIN node -np 1 ./a.out
$ mpirun -genv I_MPI_PIN_DOMAIN socket -np 1 ./a.out
The command line output of the same in a shell is 2, so why is "socket" giving different output?
I'm not certain why the output is different, I'll have to check with our developers. Generally, cpuinfo should not be run inside a job, as it is intended to provide core layout for a job. So it may be expected that the output is inconsistent in this scenario.