- I’m trying to use PGI HPF generated code with MPI over InfiniBand. As per the FAQ at FAQ | PGI
one has to update libpghpf_mpi.a so that PGI’s HPF runtime works with another MPI implementation. It asks to download mpi.c from ftp://ftp.pgroup.com/x86/3.1/linux86-patches/mpi/mpi.c However, after ftp’ing, I don’t find anything listed at the top-level directory at ftp://ftp.pgroup.com/
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd x86
550 Failed to change directory.
ftp> ls
227 Entering Passive Mode (69,30,37,38,252,143).
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> ls
227 Entering Passive Mode (69,30,37,38,104,194).
pwd
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
- ‘man pghpf’ says mpich1 is the default target, yet, generated code is not linked with MPI when using default options:
$ pghpf -O3 jac.f
$ ldd ./a.out
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e32400000)
librt.so.1 => /lib64/librt.so.1 (0x0000003e33800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003e31c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003e31800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003e31400000)
- When compiling with -Mmpi, one gets the following error:
$ pghpf -Mmpi -O3 jac.f
/opt/pgi/linux86-64/2011/mpi/mpich/lib: file not recognized: Is a directory
4. If I run,
$ pghpf -Mmpi2 -O3 jac.f
I get
/usr/bin/ld: cannot find -lfmpich
even though /opt/pgi/linux86-64/11.10/mpi/mpich/ exists
The only command that appears to link to MPI is when using -Mmpi2 and using another MPI implementation’s library:
$ pghpf -Mmpi2 -O3 jac.f -L /usr/mpi/intel/mvapich2-1.4/lib
$ ldd a.out
libfmpich.so.1.1 => /usr/mpi/intel/mvapich2-1.4/lib/libfmpich.so.1.1 (0x00002afdccef8000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e32400000)
libmpich.so.1.1 => /usr/mpi/intel/mvapich2-1.4/lib/libmpich.so.1.1 (0x00002afdcd13c000)
librt.so.1 => /lib64/librt.so.1 (0x0000003e33800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003e31c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003e31800000)
librdmacm.so.1 => /usr/lib64/librdmacm.so.1 (0x0000003e32c00000)
libibverbs.so.1 => /usr/lib64/libibverbs.so.1 (0x00002afdcd54d000)
libibumad.so.2 => /usr/lib64/libibumad.so.2 (0x0000003e32800000)
libimf.so => /opt/intel/Compiler/11.1/064/lib/intel64/libimf.so (0x00002afdcd75b000)
libsvml.so => /opt/intel/Compiler/11.1/064/lib/intel64/libsvml.so (0x00002afdcdaed000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003e37000000)
libintlc.so.5 => /opt/intel/Compiler/11.1/064/lib/intel64/libintlc.so.5 (0x00002afdcdd04000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003e32000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003e31400000)
And when this code is run, I get
$ mpirun_rsh -np 4 -host …/hosts ./a.out -pghpf -np 4 -stat all
Fatal error in MPI_Comm_rank:
Invalid communicator, error stack:
MPI_Comm_rank(107): MPI_Comm_rank(comm=0x5b, rank=0x6b8b14) failed
MPI_Comm_rank(65).: Invalid communicator
Fatal error in MPI_Comm_rank:
Invalid communicator, error stack:
MPI_Comm_rank(107): MPI_Comm_rank(comm=0x5b, rank=0x6b8b14) failed
MPI_Comm_rank(65).: Invalid communicator
Fatal error in MPI_Comm_rank:
Invalid communicator, error stack:
MPI_Comm_rank(107): MPI_Comm_rank(comm=0x5b, rank=0x6b8b14) failed
MPI_Comm_rank(65).: Invalid communicator
Fatal error in MPI_Comm_rank:
Invalid communicator, error stack:
MPI_Comm_rank(107): MPI_Comm_rank(comm=0x5b, rank=0x6b8b14) failed
MPI_Comm_rank(65).: Invalid communicator
MPI process (rank: 0) terminated unexpectedly on node19.local
Exit code -5 signaled from node19
MPI process (rank: 1) terminated unexpectedly on node20.local
MPI process (rank: 2) terminated unexpectedly on node21.local
MPI process (rank: 3) terminated unexpectedly on node23.local
which I assume is due to PGI HPF’s MPI interface in need of an update as per (1).
Any help would be appreciated.