Emacs สามารถใช้คนจรจัดเพื่อรันในเซสชันแบบโต้ตอบบนโหนด HPC ระยะไกลได้หรือไม่?


12

ฉันใช้ Emacs กับ ESS และคนจรจัดเพื่อโหลดไฟล์ระยะไกลและเรียกใช้กระบวนการ R ระยะไกลบนคอมพิวเตอร์ HPC ด้วยคีย์ ssh คนจรจัดทำให้ง่ายต่อC-x C-fการค้นหาไฟล์ที่/ssh:myserver:/path/to/fileตามด้วยM-x Rเพื่อเปิดเซสชัน R

อย่างไรก็ตามในคอมพิวเตอร์ HPC ที่ใช้ระบบการจัดตารางงาน (เช่นดวงอาทิตย์กริดเครื่องยนต์หรือแรงบิด) มีข้อ จำกัด ในหน่วยความจำเท่าใดและ CPU qsub -Iสามารถนำมาใช้บนโหนดหัวดังนั้นผมจึงมีการเปิดตัวเซสชั่นแบบโต้ตอบโดยใช้

เป็นไปได้หรือไม่ที่จะกำหนดค่า tramp, ssh และ / หรือ Emacs เพื่อเรียกใช้เซสชั่นแบบโต้ตอบบนโหนดทาส (ใช้qsub -Iหรือเทียบเท่า) หลังจากทำการเชื่อมต่อ ssh?


ฉันไม่แน่ใจว่าข้อ จำกัด ทั้งหมดคืออะไร?
PythonNut

@PythonNut ฉันสามารถ ssh ไปที่โหนดใหญ่โดยใช้ tramp แต่ไม่ทราบวิธีเชื่อมต่อกับโหนด slave (ซึ่งไม่สามารถเข้าถึงได้โดยตรงผ่าน 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.el


3

ฉันพยายามดิ้นรนที่จะทำเช่นเดียวกัน ฉันพบเส้นทางอื่นที่อนุญาตให้ฉันทำสิ่งเดียวกันโดยพื้นฐาน

คุณสามารถเปิดบัฟเฟอร์เปลือกโดยและจากนั้นเชื่อมต่อกับโหนดการเข้าสู่ระบบและการเชื่อมต่อไปยังเซสชันโต้ตอบโดยM-x shell qsub -Iเมื่อคุณอยู่ในเซสชั่นแบบโต้ตอบเริ่มต้นเซสชัน R Rโดยการพิมพ์คำสั่ง M-x ess-remoteมีคุณสามารถทำได้ นี่จะเป็นการแจ้งให้ mini-buffer ถามว่าโปรแกรมใดที่คุณต้องการรัน (R, S +, Stata เป็นต้น) เมื่อคุณเลือก R คุณสามารถใช้เซสชัน R บนรีโมตเชลล์เช่นเดียวกับที่คุณใช้ ESS ในเครื่องโลคอล

ฉันส่วนตัวเปิด Rscripts ที่บันทึกไว้ในโหนดระยะไกลโดยการเดินเข้าไปในมัน (ในหน้าต่างแยกต่างหาก) และทำงานกับเซสชัน R ที่เชื่อมต่อด้วยess-remoteดังที่อธิบายไว้ข้างต้น ด้วยวิธีนี้เซสชัน R สามารถโต้ตอบโดยตรงกับ Rscripts ที่ฉันทำงานด้วยได้โดยตรง (ตัวอย่างเช่นsource('code.R')คำสั่งใน R จะสามารถอ่าน 'code.R' ในคลัสเตอร์ HPC ซึ่งฉันอาจเพิ่งแก้ไขหากฉันแก้ไข Rscripts ในเครื่องท้องถิ่นของฉันแทนเซสชัน ess-remote ของ R wouldn ' ไม่สามารถอ่านได้จนกว่าฉันจะอัปโหลดไปยังโหนดระยะไกลในแต่ละครั้ง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.