HPC上节点之间的作业分配,而不是1个CPU内核

时间:2018-12-18 10:35:10

标签: c hpc pbs

我正在使用PBS,HPC提交串行写入的C代码。我必须在5个不同的目录中运行5个代码。当我选择1个节点和5个核心时 select = 1:ncpus = 5 ,并使用 ./ submit&提交。它分叉并运行所有5个作业。我选择5个节点和1个核心的时刻, select = 5:ncpus = 1 ,然后使用 ./ submit&提交。第一个节点中只有1个核心可以运行所有5个作业,其余4个线程可用,速度降低到1/5。

我的问题是,是否也可以在节点之间分叉作业? 因为当我在HPC上选择 select = 1:ncpus = 24 时,它将进入Que而不是 select = 4:ncpus = 6 运行。 谢谢。

1 个答案:

答案 0 :(得分:0)

您应该考虑将作业阵列(使用选项#PBS -t 1-5)与I节点和1个CPU一起使用。然后5个独立的作业将开始,您的作业将在队列中等待的时间更少。 在脚本内,您可以使用环境变量PBS_ARRAYID来识别任务,并使用它来设置适当的目录并启动适当的C代码。像这样:

#!/bin/bash -l
#PBS -N yourjobname
#PBS -q yourqueue
#PBS -l nodes=1:ppn=1
#PBS -t 1-5

./myprog-${PBS_ARRAYID}.c

此脚本将运行5个作业,每个作业将运行名为myprog-*。c的程序,其中*是介于1到5之间的数字。