我正在使用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 运行。 谢谢。
答案 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之间的数字。