#!/bin/bash
#SBATCH -p RM-shared
#SBATCH -n 4
#SBATCH -t 24:00:00
#SBATCH --array=1-我正在尝试启动一个阵列,对于阵列中的每个任务,我希望它使用RM共享分区上的4个核心。我这样做是否正确,或者这是否指定通过的阵列输出的所有任务必须共享4个核心?
我将为此提出一个单独的问题,但由于某种原因,当我运行此命令时,$SLURM_ARRAY_TASK_ID变量为空……
当我跑的时候
echo "My SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID在我的头文件设置作业后,它返回
My SLURM_ARRAY_TASK_ID:发布于 2021-06-11 19:26:51
首先,使用--cpus-per-task=4而不是ntasks是正确的。其次,可能是复制/粘贴错误,但您的--array行不完整
#SBATCH --array=1-应该是
#SBATCH --array=1-10例如,对于10个任务的阵列。
阵列中的每个作业将分配4个不同的核心。作业将独立调度,例如,它们可以同时在40核节点上启动所有10个节点,或者同时在10个不同的节点上启动,或者在一个4核节点上一次启动一个,或者根据群集配置和队列中的作业而进行任何可能的中间组合。
发布于 2021-06-12 02:08:24
我没有正确调用脚本。正在调用:./ThisScript.sh而不是sbatch ./ThisScript.sh
关于每个阵列作业的核心分配,一位帮助台人员建议使用#SBATCH --ntasks-per-node=4而不是#SBATCH --cpus-per-task=4
但我不知道为什么..。我期望--ntasks-per-node=4命令每个节点只需要运行4个作业,所以如果您的阵列中有12个作业,则需要3个完整的节点。
另一方面,--cpus-per-task=4将命令每个CPU (每个具有多个核心)仅运行4个任务,因此,如果阵列中有12个作业,则需要3个CPU(如果系统上的节点有3个或更多CPU,则只需要1个节点)。
https://stackoverflow.com/questions/67924654
复制相似问题