我使用SLURM来使用一些计算群集,其中有-ntasks
或-n
选项。我已经阅读了它的文档(http://slurm.schedmd.com/sbatch.html):
sbatch不会启动任务,它请求分配资源并提交批处理脚本。此选项建议Slurm控制器在分配内运行作业步骤时启动最大数量的任务,并提供足够的资源。默认情况下,每个节点一个任务,但请注意,--cpus-per-task选项将更改此默认值。
我不理解的具体部分是:
run within the allocation will launch a maximum of number tasks and to provide for sufficient resources.
我的几个问题:
- 我猜我第一个问题是什么是“任务”意味着以及在SLURM上下文中与“作业”的区别是什么。通常,我认为作业是在sbatch下运行bash脚本,例如
sbatch my_batch_job.sh
。不确定任务是什么意思。 - 如果我将单词“任务”等同于“作业”,那么我认为它将根据
-n,--ntasks=<number>
的参数多次运行同一标识符的bash脚本。然而,在群集中进行了测试,用--ntask=9
和echo hello
运行,我期望sbatch会将hello打印到stdout 9 次(这被收集在slurm-job_id.out
中),但出乎意料地,只有一个echo hello脚本的单个执行。那么这个命令到底是做什么的?它似乎什么也没做,或者至少我看不到它应该做什么。
我知道有-a,--array = <indexes>
选项可以用于多个作业。但这是另一个话题。我只是想知道--ntasks
应该做什么,最好附带一个示例,以便我可以在集群中测试它。
srun
时也需要加上--exclusive
,详见这个Stack Overflow的回答。它有两种不同的含义。当启动一个新作业时,它会独占节点。但是如果运行作业步骤(批处理脚本中的srun
),它允许同时运行作业步骤:“此选项还可用于在现有资源分配内启动多个作业步骤...,其中您希望将单独的处理器专用于每个作业步骤。”(来自文档) - akrafsinfo --version
会产生什么结果? - Alexis Lucattinisrun
?我不能只使用例如eval
吗?使用srun
的优势是什么? - Paloha