Ich habe ein Problem mit Rmpi, in dem ich versuche, es zu laden, und ich bekomme diese Fehlermeldung:
%Vor%Dieser Fehler tritt jedoch nicht auf, wenn ich als root angemeldet bin.
Es scheint sich nicht um ein Berechtigungsproblem zu handeln. Ich habe die Berechtigungen für libmpi.so.0 überprüft:
%Vor%Und Rmpi.so:
%Vor%Ich betreibe R trotzdem als sudo.
Relevante Systeminformationen: -Linux-Distribution: CentOS 5.5 -R Version: 2.11.1 (2010-05-31) -Rmpi-Version: 0,5-8 -MPI-Implementierung ist openmpi
%Vor%Jede Hilfe wäre sehr willkommen!
Das Problem hierbei ist, dass OpenMPI sein Bibliotheksverzeichnis standardmäßig nicht mit dem System-Linker registriert. Aus diesem Grund empfehlen einige Installationshandbücher, dass Sie ihre Verzeichnisse in die Variable LD_LIBRARY_PATH
einfügen, damit die Bibliotheken zur Laufzeit gefunden werden können. "Das Hinzufügen der Verzeichnisse zu LD_LIBRARY_PATH" muss jedoch jedes Mal erfolgen, wenn eine neue Shell geladen wird. Daher wird in diesen Leitfäden vorgeschlagen, sie in ~/.bashrc
oder ähnliches einzufügen, damit die Einstellung bei jeder Anmeldung wiederhergestellt wird.
Die ~/.bashrc
-Datei (oder ~/.profile
oder eine beliebige andere) ist jedoch eine benutzerspezifische Einstellung . Angenommen, man ist bei der Installation von openmpi und Rmpi und ähnlichem als root angemeldet, was wahrscheinlich ist, bedeutet dies, dass das Hinzufügen dieser benutzerspezifischen Dateien die Bibliothekspfade nur als root und nicht als normaler Laufzeitbenutzer definiert .
Der Fix ist im Allgemeinen, dem Linker mitzuteilen, wo diese Dateien gefunden werden können. Auf meinem eigenen System, auf dem CentOS 7, OpenMPI 1.10.0 (unter Verwendung der Scientific Linux RPMs), R 3.2.3 und Rmpi 0.6-5 läuft, passiert das, wenn ich den Bibliothekspfad nicht einstellen kann:
%Vor%Wenn ich den Linker-Pfad vorübergehend mit einer temporären Variable festlege, funktioniert es für diesen Aufruf:
%Vor% Um diese Änderung dauerhaft zu machen, ist es jedoch am besten, das Verzeichnis openmpi libraries mit dem Systemlinker selbst zu registrieren, indem Sie eine neue Datei in /etc/ld.so.conf.d
erstellen und ldconfig
wie folgt ausführen:
Sobald Sie das getan haben, sollte Rmpi für jeden Benutzer unabhängig von Umgebungsvariablen geladen werden können.
Tags und Links r shared-libraries mpi