簡體   English   中英

使用 Slurm 運行在 HPC 上調用一堆終端命令的 Python 文件的正確方法是什么?

[英]What is the proper way to use Slurm to run a Python file that calls a bunch of terminal commands on a HPC?

我使用的 HPC 要求我使用 Slurm 在計算上運行程序。 目前,我在我的筆記本電腦上本地運行一個 Python 腳本,該腳本循環調用一堆 bash 命令。 例如,Python 文件有一段代碼看起來像

command = "docker run -v %s:/usr/local/share/foo/ xyzw mpirun -n %d abcd %d /usr/local/share/foo/%s /usr/local/share/foo/%s" % (directory, numberOfCores, binaryPrecision, inFile, outFile)
command = shlex.split(command)
subprocess.call(command)

這里xyzw是 Docker 容器, abcd是我使用 MPI 運行的程序。 現在我想在 HPC 上做一些類似的事情,但使用 Singularity 和 Slurm。 我的困惑如下。 假設我調用上面的 Python 文件 script.py。 那么我有兩個選擇。 我要么將文件中的命令保留為command = "singularity exec -v..."並使用srun python3 script.py運行 Python 文件,要么將文件中的命令更改為command = "srun singularity exec -v..."並從登錄節點運行 Python 文件作為python3 script.py

兩者中哪一個是合法的做事方式? 我最擔心的是假設我 go 帶有srun python3 script.py選項。 那么我分配給腳本的資源是否會得到有效利用,或者它是否會將奇點的東西降級到一個核心,從而使整個練習徒勞無功?

除非特別配置,否則進程以單一方式運行,可以完全訪問主機操作系統的硬件資源。 這些資源的使用方式取決於容器內運行的任何應用程序。

MPI 是它自己的特殊野獸,因此我強烈建議通讀 Singularity 文檔以了解如何使用它。 它還直接介紹了如何將其與 Slurm 一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM