gpt4 book ai didi

multithreading - 利用 SLURM 上的所有 CPU

转载 作者:行者123 更新时间:2023-12-03 12:58:54 27 4
gpt4 key购买 nike

我想在集群上运行一个作业。不同节点上有不同数量的 CPU,我不知道将分配给我的节点。什么是正确的选项,以便作业可以在所有节点上创建与 CPU 一样多的任务?

#!/bin/bash -l

#SBATCH -p normal
#SBATCH -N 4
#SBATCH -t 96:00:00

srun -n 128 ./run

最佳答案

实现目标的一个肮脏的技巧是使用 SLURM 提供的环境变量。对于示例 sbatch 文件:

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=res.txt
#SBATCH --time=10:00
#SBATCH --nodes=2
echo $SLURM_CPUS_ON_NODE
echo $SLURM_JOB_NUM_NODES
num_core=$SLURM_CPUS_ON_NODE
num_node=$SLURM_JOB_NUM_NODES
let proc_num=$num_core*$num_node
echo $proc_num
srun -n $proc_num ./run

作业脚本中仅请求节点数。 $SLURM_CPUS_ON_NODE将提供每个节点的 CPU 数量。您可以将它与其他环境变量(例如: $SLURM_JOB_NUM_NODES )一起使用以了解可能的任务数量。在上面的脚本中,动态任务计算是假设节点是同质的(即 $SLURM_CPUS_ON_NODE 将只给出单个数字)。

对于异构节点, $SLURM_CPUS_ON_NODE将给出多个值(例如:如果分配的节点有 2 和 3 个 CPU,则为 2,3)。在这种情况下, $SLURM_JOB_NODELIST可用于找出与分配的节点对应的 CPU 数量,并据此计算所需的任务。

关于multithreading - 利用 SLURM 上的所有 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57466957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com