Ich habe Emacs mit ESS und Tramp verwendet, um Remote-Dateien zu laden und Remote-R-Prozesse auf HPC-Computern auszuführen. Mit ssh-Schlüsseln erleichtert tramp das C-x C-f
Auffinden von Dateien, /ssh:myserver:/path/to/file
gefolgt vom M-x R
Starten einer R-Sitzung.
Auf HPC-Computern, die ein Jobplanungssystem verwenden (z. B. Sun Grid Engine oder Torque), gibt es jedoch Einschränkungen hinsichtlich der Verwendung von Speicher und CPU auf dem Hauptknoten. Daher muss ich eine interaktive Sitzung mit starten qsub -I
.
Ist es möglich, tramp, ssh und / oder Emacs so zu konfigurieren, dass qsub -I
nach dem Herstellen einer ssh-Verbindung eine interaktive Sitzung auf einem Slave-Knoten (mit oder gleichwertig) gestartet wird?
tramp
ess
interactive
ssh
David LeBauer
quelle
quelle
tramp-remote-shell
set toqrsh
oder könnenqlogin
Sie möglicherweise eine interaktive Clustersitzung erhalten.Antworten:
Es hört sich so an, als sollten Sie erweitern
tramp-methods
und eine neue Methode hinzufügen, die dersudo
Methode ähnelt, aberqsub -I
stattdessen verwendet. Sie können dann einen Multi-Hop-Tramp-Pfad verwenden, um zuerst eine Verbindung zum Kopfknoten und dann eine Verbindung zu einem Rechenknoten herzustellen.Versuche dies:
Sie würden dann einen Tramppfad wie verwenden
/ssh:myserver|qsub:myserver:/path/to/file
.Möglicherweise müssen Sie andere Optionen angeben, um sie an qsub zu übergeben. Ich habe es nicht benutzt, also kann ich dir dort nicht helfen. Sie sollten sich auch die anderen Optionen ansehen, die Sie für eine Tramp-Methode angeben können. In tramp.el sind ein paar Dutzend aufgeführt.
quelle
Ich habe mich bemüht, dasselbe zu tun. Ich fand eine andere Route, die es mir ermöglichte, im Grunde das Gleiche zu tun.
Sie können einen Shell-Puffer öffnen, indem Sie
M-x shell
von dort aus eine Verbindung zum Anmeldeknoten herstellen und dann eine Verbindung zur interaktiven Sitzung herstellenqsub -I
. Sobald Sie in der interaktiven Sitzung sind, starten Sie eine R-Sitzung, indem Sie den Befehl eingebenR
. Dort können Sie tunM-x ess-remote
. Daraufhin wird ein Minipuffer gefragt, welches Programm Sie ausführen möchten (R, S +, Stata usw.). Wenn Sie R ausgewählt haben, können Sie die R-Sitzung auf der Remote-Shell genauso verwenden, wie Sie ESS auf dem lokalen Computer verwenden.Ich persönlich öffne Rscripts, die auf dem Remote-Knoten gespeichert sind, indem ich in ihn trampele (in einem separaten Fenster) und arbeite mit der R-Sitzung, die über die
ess-remote
oben beschriebene verbunden ist. Auf diese Weise kann die R-Sitzung direkt mit den Rscripts interagieren, mit denen ich arbeite. (Zum Beispiel kann dersource('code.R')
Befehl in R den 'code.R' im HPC-Cluster lesen, den ich möglicherweise gerade bearbeitet habe. Wenn ich stattdessen Rscripts auf meinem lokalen Computer bearbeiten würde, würde die ess-remote-Sitzung von R nicht ' Sie können sie nur lesen, wenn ich sie jedes Mal auf den Remote-Knoten hochgeladen habe.)quelle