Emacsは、トランプを使用してリモートHPCノードのインタラクティブセッションで実行できますか?


11

EmacsでESSおよびtrampを使用して、リモートファイルをロードし、HPCコンピューターでリモートRプロセスを実行しています。SSHキーを使用すると、trampはと、これが容易になりますC-x C-fでファイルを見つけるために/ssh:myserver:/path/to/file続くM-x RRセッションを起動します。

ただし、ジョブスケジューリングシステム(Sun Grid EngineやTorqueなど)を使用するHPCコンピューターでは、ヘッドノードで使用できるメモリとCPUの量に制限があるため、を使用してインタラクティブセッションを起動する必要がありqsub -Iます。

qsub -Issh接続が行われた後、スレーブノードで(使用または同等のもの)インタラクティブセッションを起動するようにtramp、ssh、Emacsを構成することは可能ですか?


どのような制限があるのか​​、完全にはわかりません。
PythonNut

@PythonNut trampを使用してヘッドノードにsshできますが、スレーブノード(sshから直接アクセスできない)に接続する方法がわかりません。
David LeBauer、2015年

最初に別のシェルを起動するようにESSに指示することはできないようですが、にtramp-remote-shell設定するqrshqlogin、インタラクティブなクラスターセッションを取得できる場合があります。
rekado

回答:


4

拡張する必要があるようですがtramp-methodssudoメソッドに似ていますがqsub -I代わりに使用する新しいメソッドを追加します。その後、マルチホップのトランプパスを使用して、最初にヘッドノードに接続し、次に計算ノードに接続できます。

これを試して:

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

次に、のようなトランプパスを使用します/ssh:myserver|qsub:myserver:/path/to/file

qsubに渡すには、他のオプションを指定する必要がある場合があります。私はそれを使ったことがないので、あなたを助けることはできません。また、trampメソッドで指定できる他のオプションを確認することもできます。tramp.elには数十がリストされています。


3

私は同じことをするのに苦労してきました。基本的に同じことをすることができる別のルートを見つけました。

シェルバッファーを開いてM-x shellそこからログインノードに接続し、からインタラクティブセッションに接続できますqsub -I。インタラクティブセッションに入ると、コマンドを入力してRセッションを開始しますR。そこで、あなたはすることができますM-x ess-remote。これにより、実行するプログラム(R、S +、Stataなど)を尋ねるミニバッファーが表示されます。Rを選択すると、ローカルマシンでESSを使用するのと同じように、リモートシェルでRセッションを使用できます。

私はリモートノードに保存されたRscriptを個人的に開いて(別のウィンドウで)リモートノードに移動し、ess-remote上記のようにで接続されたRセッションを操作します。このようにして、Rセッションは、使用しているRscriptsと直接対話できます。(たとえばsource('code.R')、Rのコマンドは、HPCクラスターの 'code.R'を読み取ることができます。これは今編集した可能性があります。代わりにローカルマシンでRscriptsを編集していた場合、Rのess-remoteセッションは毎回リモートノードにアップロードしない限り、それらを読むことはできません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.