我在有限的CPU资源上使用MPI程序。 它涉及运行一个需要12个线程CPU上的20个独立进程的应用程序。 我用不同的参数一次又一次地运行它。
在应用程序结束时,20个进程中的大部分已经完成,剩下的12个线程中有11个空闲,等待最后一个线程完成。 我希望利用这些空闲内核来开始下一个工作,而不用等待当前的工作完成。 如果一个核心已经空闲,我已经可以开始下一个工作了。
扭矩已经build立,但我需要提前说明资源需求。 我希望dynamic分配这些CPU内核,使CPU始终处于100%。
如果您的集群/节点启用了共享模式,则可以开始下一个作业。 基本上,你需要的是一个节点分配策略,但是这可以通过一个作业调度器环境来完成(例如,扭矩+摩擦/毛伊或slurm)。 这仅仅是扭矩很可能是不可能的。
其他选项是在单个作业脚本中启动任务。 任务启动器需要足够聪明以找出可用的资源。 这可以使用简单的作业脚本来编写脚本,但可能会非常棘手。 (你可以看看硝基甚至Condor)。