Emacs può usare il vagabondo per l'esecuzione in una sessione interattiva su un nodo HPC remoto?


12

Ho usato Emacs con ESS e vagabondo per caricare file remoti ed eseguire processi R remoti su computer HPC. Con i tasti ssh, il vagabondo semplifica la C-x C-fricerca del file /ssh:myserver:/path/to/fileseguito da M-x Rper avviare una sessione R.

Tuttavia, sui computer HPC che utilizzano un sistema di pianificazione dei lavori (ad esempio Sun Grid Engine o Torque) ci sono restrizioni su quanta memoria e CPU possono essere utilizzate sul nodo principale, quindi devo avviare una sessione interattiva usando qsub -I.

È possibile configurare tramp, ssh e / o Emacs per avviare una sessione interattiva su un nodo slave (usando qsub -Io equivalente) dopo aver effettuato una connessione ssh?


Non sono del tutto sicuro di quali siano i limiti?
PythonNut,

@PythonNut Posso usare ssh sul nodo head usando il tramp, ma non so come collegarmi al nodo slave (che non è direttamente accessibile via ssh).
David LeBauer,

Non sembra possibile dire a ESS di avviare prima una shell diversa, ma con tramp-remote-shellset to qrsho qloginpotresti essere in grado di ottenere una sessione di cluster interattiva.
rekado,

Risposte:


5

Sembra che dovresti estenderlo tramp-methods, aggiungendo un nuovo metodo che è simile al sudometodo ma che utilizza qsub -Iinvece. Saresti quindi in grado di utilizzare un percorso del vagabondo multi-hop per connetterti prima al nodo head e quindi a un nodo di calcolo.

Prova questo:

(add-to-list 'tramp-methods
  '("qsub"
    (tramp-login-program        "qsub")
    (tramp-login-args           (("-I"))) ; other options here?
    ;; Local $SHELL could be a nasty one, like zsh or fish.  Let's override it.
    (tramp-login-env            (("SHELL") ("/bin/sh")))
    (tramp-remote-shell         "/bin/sh")
    (tramp-remote-shell-args    ("-c"))
    (tramp-connection-timeout   10)))

Quindi useresti un percorso del vagabondo come /ssh:myserver|qsub:myserver:/path/to/file.

Potrebbe essere necessario specificare altre opzioni per passare a qsub; Non l'ho usato, quindi non posso aiutarti. Ti consigliamo anche di esaminare le altre opzioni che puoi specificare su un metodo vagabondo; ce ne sono un paio di dozzine elencate in tramp.el.


3

Ho avuto difficoltà a fare lo stesso. Ho trovato un percorso diverso che mi ha permesso di fare sostanzialmente la stessa cosa.

È possibile aprire un buffer della shell da M-x shelle da lì connettersi al nodo di accesso e quindi connettersi alla sessione interattiva tramite qsub -I. Quando sei nella sessione interattiva, avvia una sessione R digitando il comando R. Ecco, puoi farlo M-x ess-remote. Questo richiederà un mini-buffer che chiede quale programma si desidera eseguire (R, S +, Stata, ecc.) Dopo aver selezionato R, è possibile utilizzare la sessione R sulla shell remota proprio come si usa ESS nel computer locale.

Apro personalmente Rscripts salvati nel nodo remoto calpestandolo (in una finestra separata) e lavoro con la sessione R connessa ess-remotecome descritto sopra. In questo modo, la sessione R può interagire direttamente con gli Rscripts con cui sto lavorando. (Ad esempio, il source('code.R')comando in R sarà in grado di leggere il 'code.R' nel cluster HPC, che avrei potuto appena modificato. Se invece stessi modificando Rscripts nella mia macchina locale, la sessione ess-remote di R non farebbe ' essere in grado di leggerli a meno che non li abbia caricati ogni volta sul nodo remoto.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.