Emacs는 tramp를 사용하여 원격 HPC 노드의 대화식 세션에서 실행할 수 있습니까?


12

ESS 및 tramp와 함께 Emacs를 사용하여 원격 파일을로드하고 HPC 컴퓨터에서 원격 R 프로세스를 실행했습니다. ssh 키를 사용하여 tramp 를 사용하면 R 세션을 시작한 다음 C-x C-f파일을 쉽게 찾을 수 있습니다 ./ssh:myserver:/path/to/fileM-x R

그러나 작업 예약 시스템 (예 : Sun Grid Engine 또는 Torque)을 사용하는 HPC 컴퓨터에는 헤드 노드에서 사용할 수있는 메모리 및 CPU 양에 제한이 있으므로를 사용하여 대화식 세션을 시작해야합니다 qsub -I.

qsub -Issh 연결 후 슬레이브 노드에서 대화식 세션을 시작하도록 트램프, ssh 및 / 또는 Emacs를 구성 할 수 있습니까?


제한 사항이 무엇인지 잘 모르겠습니다.
PythonNut

@PythonNut tramp를 사용하여 헤드 노드에 ssh를 할 수는 있지만 ssh를 통해 직접 액세스 할 수없는 슬레이브 노드에 연결하는 방법을 모릅니다.
David LeBauer

다른 쉘을 먼저 시작하도록 ESS에 지시 할 수는 없지만로 tramp-remote-shell설정 qrsh하거나 qlogin대화식 클러스터 세션을 얻을 수 있습니다.
rekado

답변:


5

확장 해야하는 것처럼 들리지만 tramp-methods메서드와 비슷 sudo하지만 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에 12 개가 있습니다.


3

나는 똑같이하기 위해 고군분투했다. 나는 기본적으로 동일한 일을 할 수있는 다른 경로를 발견했습니다.

쉘 버퍼를 열고 M-x shell로그인 노드에 연결 한 다음로 대화식 세션에 연결할 수 qsub -I있습니다. 대화식 세션에 있으면 명령을 입력하여 R 세션을 시작하십시오 R. 거기서 할 수 있습니다 M-x ess-remote. 이렇게하면 실행하려는 프로그램 (R, S +, Stata 등)을 묻는 미니 버퍼가 나타납니다. R을 선택하면 로컬 시스템에서 ESS를 사용하는 것처럼 원격 셸에서 R 세션을 사용할 수 있습니다.

나는 원격 노드에 저장된 Rscripts를 (별도의 창으로) 트래핑하여 개인적으로 열고 ess-remote위에서 설명한대로 연결된 R 세션으로 작업합니다 . 이런 식으로 R 세션은 내가 작업하고있는 Rscript와 직접 상호 작용할 수 있습니다. (예를 들어, source('code.R')R의 명령은 HPC 클러스터에서 'code.R'을 읽을 수 있으며, 방금 편집했을 수도 있습니다. 대신 로컬 컴퓨터에서 Rscript를 편집하는 경우 R의 ess-remote 세션은 ' 매번 원격 노드에 업로드하지 않으면 읽을 수 없습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.