Emacs, uzak bir HPC düğümünde etkileşimli bir oturumda çalıştırmak için serseri kullanabilir mi?


12

Uzak dosyaları yüklemek ve uzak R işlemlerini HPC bilgisayarlarında çalıştırmak için ESS ve serseri ile Emacs kullanıyorum. Ssh tuşları ile, tramp bunu bir R oturumu başlatmak için izleyen C-x C-fdosyayı bulmak için kolaylaştırır ./ssh:myserver:/path/to/fileM-x R

Ancak, bir iş planlama sistemi (örn. Sun Grid Engine veya Torque) kullanan HPC bilgisayarlarda, baş düğümde ne kadar bellek ve CPU kullanılabileceğine dair kısıtlamalar vardır, bu nedenle kullanarak etkileşimli bir oturum başlatmak zorundayım qsub -I.

qsub -ISsh bağlantısı yapıldıktan sonra slave düğümünde ( veya eşdeğerini kullanarak ) etkileşimli bir oturum başlatmak için tramp, ssh ve / veya Emacs yapılandırılabilir mi?


Kısıtlamaların ne olduğundan tam olarak emin değilim?
15:13

@PythonNut Trampet kullanarak kafa düğümüne ssh yapabilirim, ancak daha sonra slave düğümüne nasıl bağlanacağını bilmiyorum (ssh aracılığıyla doğrudan erişilemez).
David LeBauer

İlk olarak ESS'ye farklı bir kabuk başlatmasını söylemek mümkün görünmüyor, ancak tramp-remote-shellset olarak qrshveya ile qloginetkileşimli bir küme oturumu başlatabilirsiniz.
rekado

Yanıtlar:


5

Genişletmeniz gerektiği gibi geliyor tramp-methods, yönteme benzer sudoancak qsub -Ibunun yerine kullanan yeni bir yöntem ekliyor . Daha sonra, önce kafa düğümüne bağlanmak ve sonra bir hesaplama düğümüne bağlanmak için çok sekmeli bir tramp yolu kullanabilirsiniz.

Bunu dene:

(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)))

Daha sonra bir trampet yolu kullanırsınız /ssh:myserver|qsub:myserver:/path/to/file.

Qsub'a geçmek için başka seçenekler belirtmeniz gerekebilir; Kullanmadım bu yüzden orada size yardım edemem. Ayrıca bir tramp yönteminde belirtebileceğiniz diğer seçeneklere de bakmak isteyeceksiniz; tramp.el'de listelenen birkaç düzine vardır.


3

Ben de aynısını yapmak için uğraşıyorum. Temelde aynı şeyi yapmama izin veren farklı bir rota buldum.

M-x shellOturum açma düğümüne bağlanıp oradan bir kabuk tamponu açabilir ve ardından etkileşimli oturuma bağlanabilirsiniz qsub -I. Etkileşimli oturumda olduğunuzda, komutu yazarak bir R oturumu başlatın R. Orada yapabilirsin M-x ess-remote. Bu, hangi programı çalıştırmak istediğinizi soran bir mini tampon isteyecektir (R, S +, Stata, vb.) R'yi seçtikten sonra, yerel makinede ESS'yi kullandığınız gibi uzak kabuktaki R oturumunu kullanabilirsiniz.

Uzaktaki düğüme kaydedilen Rscripts'i kişisel olarak içine açarak (ayrı bir pencerede) açıyorum ve ess-remoteyukarıda açıklandığı gibi bağlı R oturumu ile çalışıyorum . Bu şekilde, R oturumu, birlikte çalıştığım Rscripts ile doğrudan etkileşime girebilir. (Örneğin, source('code.R')R'deki komut, az önce düzenlemiş olabileceğim HPC kümesindeki 'code.R'yi okuyabilecektir. Bunun yerine yerel makinemde Rscripts'i düzenliyorsam, R'nin ess-uzak oturumu olmazdı' t Her seferinde uzak düğüme yüklemediğim sürece bunları okuyamazsınız.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.