Python slurm 集群上的作业,节点与核心
Python job on slurm cluster, nodes vs cores
我有一个非常基本的问题,但不知何故我一直找不到答案。假设我可以访问集群 运行ning slurm,并且我需要在集群上 运行 一个 Python 作业。让我们假设我的代码 而不是 被编写来支持多处理。我有任何理由需要多核吗?或者我应该坚持使用 1 个节点和 1 个核心?
相反,如果我想 运行 5 次相同的脚本(例如,使用不同的输入变量),需要 1 个节点和为每个作业分配 1 个核心,或者需要 5 个节点之间有什么区别每个有 1 个核心?
如果您的 python 脚本不使用多线程,那么是的,您应该坚持一项任务 (-n1
) 和一项 CPU (-c1
)一个节点 (-N1
)。你不需要指定它,因为它是默认的。如果您请求更多资源,它们只会被浪费,因为您不使用它们。
但是:一些 python 多线程计算的库不需要明确指定它们,所以如果你做一些 numpy 计算,you may benefit from multiple cores.
Conversely, if I wanted to run 5 times the same script (with different input variables for example), is there any difference between requiring 1 node and assigning 1 core to each job, or requiring 5 nodes with 1 core each?
是的,有:如果您向 Slurm 请求 5 个节点,每个节点有 1 个任务,那么它必须等到 5 个节点有空间来执行任务。例如,即使具有 20 CPU 的节点完全为空,您的作业也不会 运行,因为您明确要求 5 个节点。所以我建议用 -n1
.
开始 5 个工作
我有一个非常基本的问题,但不知何故我一直找不到答案。假设我可以访问集群 运行ning slurm,并且我需要在集群上 运行 一个 Python 作业。让我们假设我的代码 而不是 被编写来支持多处理。我有任何理由需要多核吗?或者我应该坚持使用 1 个节点和 1 个核心?
相反,如果我想 运行 5 次相同的脚本(例如,使用不同的输入变量),需要 1 个节点和为每个作业分配 1 个核心,或者需要 5 个节点之间有什么区别每个有 1 个核心?
如果您的 python 脚本不使用多线程,那么是的,您应该坚持一项任务 (-n1
) 和一项 CPU (-c1
)一个节点 (-N1
)。你不需要指定它,因为它是默认的。如果您请求更多资源,它们只会被浪费,因为您不使用它们。
但是:一些 python 多线程计算的库不需要明确指定它们,所以如果你做一些 numpy 计算,you may benefit from multiple cores.
Conversely, if I wanted to run 5 times the same script (with different input variables for example), is there any difference between requiring 1 node and assigning 1 core to each job, or requiring 5 nodes with 1 core each?
是的,有:如果您向 Slurm 请求 5 个节点,每个节点有 1 个任务,那么它必须等到 5 个节点有空间来执行任务。例如,即使具有 20 CPU 的节点完全为空,您的作业也不会 运行,因为您明确要求 5 个节点。所以我建议用 -n1
.