你能把 srun 的不同任务读入 Python 吗?

Can you read different tasks of srun into Python?

当运行运行时,标志“-n”通常指定每个节点需要多少个任务。有没有办法将不同的任务 ID 读入 python。例如定义一个基本的python文件test.py:

#test.py

#somehow read the task ID as taskID
taskID = ...

print('task ID: ' + str(taskID))

现在,有什么方法可以定义 taskID 以便

srun -n2 python3 test.py 将打印以下内容:

task ID 0
task ID 1

我知道这可以通过 MPI 等其他并行框架来完成,因为您可以定义每个任务的等级,但我想知道是否可以仅使用 slurm 来完成。

SLURM_PROCID 环境变量应该给你想要的:

#test.py
import os
#somehow read the task ID as taskID
taskID = os.environ["SLURM_PROCID"]

print('task ID: ' + str(taskID))