例如,我有20个(基本相同)的单核应用程序,我想在一个 job 中启动。每次运行的应用程序都应精确得到一个排他 CPU。
运行的20个应用程序将适合(并应留在)单个节点上(假设该节点具有100 cpus,因此有足够的空间)。
根据我对SLURM的了解,我有两种选择:
ntasks=20
定义工作,并使用srun -N 1 -n 1 -c 1 --exclusive MYAPPLICATION
ntasks=1
定义作业并设置--cpus-per-task=20
,然后再次使用srun -N 1 -n 1 -c 1 --exclusive MYAPPLICATION
触发应用程序。到目前为止,这是正确的吗?
现在是让我困惑的部分。当我在节点上运行一个应用程序(一个内部srun
调用)时,大约需要10分钟。当我运行20个应用程序时,它不需要20 *(10分钟)= 200分钟,而是380分钟。 为什么?这些作业应该彼此完全独立(cpu用法不应重叠)并且cpus相同。尽管如此,无论我是否正在运行其他独立作业,这似乎都很重要。
如何启动几个真正独立的单核应用程序?
提前谢谢!