Używam Emacsa z ESS i tramp do ładowania zdalnych plików i uruchamiania zdalnych procesów R na komputerach HPC. Dzięki kluczom ssh tramp ułatwia C-x C-f
znalezienie pliku, /ssh:myserver:/path/to/file
a następnie M-x R
uruchomienie sesji R.
Jednak na komputerach HPC korzystających z systemu planowania zadań (np. Sun Grid Engine lub Torque) obowiązują ograniczenia dotyczące ilości pamięci i procesora w węźle głównym, więc muszę uruchomić sesję interaktywną qsub -I
.
Czy można skonfigurować tramp, ssh i / lub Emacs, aby uruchamiać interaktywną sesję w węźle slave (za pomocą qsub -I
lub równorzędnym) po nawiązaniu połączenia ssh?
tramp
ess
interactive
ssh
David LeBauer
źródło
źródło
tramp-remote-shell
ustawieniu opcjiqrsh
lubqlogin
możesz uzyskać interaktywną sesję klastra.Odpowiedzi:
Wygląda na to, że powinieneś rozszerzyć
tramp-methods
, dodając nową metodę, która jest podobna dosudo
metody, ale używaqsub -I
zamiast niej. Będziesz wtedy mógł użyć ścieżki trampowej z wieloma przeskokami, aby najpierw połączyć się z węzłem głównym, a następnie połączyć z węzłem obliczeniowym.Spróbuj tego:
Użyłbyś wtedy ścieżki trampowej
/ssh:myserver|qsub:myserver:/path/to/file
.Może być konieczne określenie innych opcji, aby przejść do qsub; Nie użyłem tego, więc nie mogę ci pomóc. Będziesz także chciał przejrzeć inne opcje, które możesz określić w metodzie trampowej; w tramp.el jest wymienionych kilkadziesiąt.
źródło
Walczyłem o to samo. Znalazłem inną trasę, która pozwoliła mi zrobić to samo.
Możesz otworzyć bufor powłoki
M-x shell
, a następnie połączyć się z węzłem logowania, a następnie połączyć się z sesją interaktywną przezqsub -I
. Po przejściu do sesji interaktywnej rozpocznij sesję R, wpisując polecenieR
. Tam możesz zrobićM-x ess-remote
. Spowoduje to wyświetlenie mini-bufora z pytaniem, który program chcesz uruchomić (R, S +, Stata itp.) Po wybraniu R możesz użyć sesji R na zdalnej powłoce, tak jak używasz ESS na komputerze lokalnym.Osobiście otwieram skrypty Rscript zapisane w zdalnym węźle, wtrącając się do niego (w osobnym oknie) i pracuję z sesją R połączoną w
ess-remote
sposób opisany powyżej. W ten sposób sesja R może bezpośrednio oddziaływać z skryptami R, z którymi pracuję. (Na przykładsource('code.R')
polecenie w R będzie w stanie odczytać „code.R” w klastrze HPC, który mógłbym właśnie edytować. Gdybym zamiast tego edytował Rscripts na moim komputerze lokalnym, sesja R-ess-zdalnego nie zrobiłaby „ będę mógł je odczytać, chyba że za każdym razem załaduję je do zdalnego węzła).źródło