Ich arbeite an einem Cluster mit Vampir für die Visualisierung von MPI-Kommunikation. Da dem Cluster eine MPI3-Implementierung fehlte, habe ich OpenMPI 2.0.0 (keine anderen Flags als --prefix wurden verwendet) in meinem Home-Verzeichnis installiert (funktioniert ohne Vampir). Jetzt weiß ich nicht, meine lokale MPI3-Installation mit Vampir richtig zu kombinieren, um mein Programm zu erstellen (fetchAndOpTest.f90). Ich habe versucht, die folgenden:Vampir mit lokaler MPI-Installation
vtf90 -vt:fc ~/OpenMPI2/bin/mpif90 -o fetchAndOpTestF90.x fetchAndOpTest.f90
(Sie wissen nicht, wenn es wichtig ist, aber das gibt die folgende Warnung: /usr/bin/ld: warning: libmpi.so.1, needed by /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmpi_f77.so, may conflict with libmpi.so.20
)
mein Programm durchführen mit ~/OpenMPI2/bin/mpirun -np 2 fetchAndOpTestF90.x
Ergebnisse in: fetchAndOpTestF90.x: error while loading shared libraries: libvt-mpi.so.0: cannot open shared object file: No such file or directory [...]
Deshalb I versuchte auch vtf90 -vt:fc ~/OpenMPI2/bin/mpif90 -L/opt/vampirtrace/5.14.4/lib -o fetchAndOpTestF90.x fetchAndOpTest.f90
, aber es änderte nicht die LDD-Ausgabe.
EDIT: Bearbeitete LD_LIBRARY_PATH wie von @Harald vorgeschlagen.
> ldd fetchAndOpTestF90.x linux-vdso.so.1 => (0x00007ffc6ada9000) libmpi_f77.so.1 => /usr/lib/libmpi_f77.so.1 (0x00007ff8fdf2e000) libvt-mpi.so.0 => /opt/vampirtrace/5.14.4/lib/libvt-mpi.so.0 (0x00007ff8fdca3000) libvt-mpi-unify.so.0 => /opt/vampirtrace/5.14.4/lib/libvt-mpi-unify.so.0 (0x00007ff8fda18000) libotfaux.so.0 => /opt/vampirtrace/5.14.4/lib/libotfaux.so.0 (0x00007ff8fd810000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff8fd50c000) libopen-trace-format.so.1 => /opt/vampirtrace/5.14.4/lib/libopen-trace-format.so.1 (0x00007ff8fd2c4000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff8fd0ab000) libpapi.so.5.3 => /usr/lib/x86_64-linux-gnu/libpapi.so.5.3 (0x00007ff8fce57000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff8fcc53000) libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007ff8fc939000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff8fc633000) libmpi_usempi.so.20 => /home/USER/OpenMPI2/lib/libmpi_usempi.so.20 (0x00007ff8fc430000) libmpi_mpifh.so.20 => /home/USER/OpenMPI2/lib/libmpi_mpifh.so.20 (0x00007ff8fc1df000) libmpi.so.20 => /home/USER/OpenMPI2/lib/libmpi.so.20 (0x00007ff8fbefb000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff8fbce5000) libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007ff8fbaa9000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff8fb88b000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff8fb4c6000) libmpi.so.1 => /usr/lib/libmpi.so.1 (0x00007ff8fb145000) /lib64/ld-linux-x86-64.so.2 (0x00007ff8fe162000) libpfm.so.4 => /usr/lib/x86_64-linux-gnu/libpfm.so.4 (0x00007ff8fadff000) libopen-pal.so.20 => /home/USER/OpenMPI2/lib/libopen-pal.so.20 (0x00007ff8fab09000) libopen-rte.so.20 => /home/USER/OpenMPI2/lib/libopen-rte.so.20 (0x00007ff8fa887000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007ff8fa684000) libhwloc.so.5 => /usr/lib/x86_64-linux-gnu/libhwloc.so.5 (0x00007ff8fa43b000) libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007ff8fa231000) libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007ff8fa026000) libpciaccess.so.0 => /usr/lib/x86_64-linux-gnu/libpciaccess.so.0 (0x00007ff8f9e1d000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff8f9c15000)
Jetzt wirft Ausführungsfehler: mpirun noticed that process rank 0 with PID 0 on node cluster exited on signal 11 (Segmentation fault)
(Programm korrekt ist, und baut und die Ausführung mit lokaler MPI3 Installation ohne Vampir läuft gut)
Ich habe keine statischen Bibliotheken erstellt, also ging ich direkt zu Vorschlag 2. Das scheint gut zu funktionieren (Ich habe ldd-output bearbeitet), aber jetzt Ausführung mit '~/OpenMPI2/bin/mpirun -np 1 fetchAndOpTest.x' löst einen Fehler aus: 'mpirun hat festgestellt, dass Prozess 0 mit PID 0 auf dem Knoten-Cluster auf Signal 11 (Segmentierungsfehler) beendet ist." (Das passiert auch bei anderen Programmen, die alle korrekt sind). Vielleicht weist die Warnung auf dieses Problem hin? –
Ich werde Score-P versuchen. Ich denke, unter diesen Umständen ist dies die beste Lösung für mein Problem. –