根据我对Dask-Jobqueue (https://jobqueue.dask.org/en/latest/)的阅读,以及在我们的SLURM集群上的测试,似乎当您设置cluster.scale(n)并创建client = Client(cluster)时,在您的作业的所有n都能够启动之前,没有一个作业能够启动。
假设您有999个作业要运行,一个集群有100个节点或插槽;更糟糕的是,假设其他人共享该集群,其中一些人可能有长期运行的作业。管理员有时需要对一些节点进行维护,因此他们会添加和删除节点。你永远不知道你能得到多大的并行性。您希望集群调度程序只接收999个作业(在slurm中,这些作业将通过sbatch提交),在任何可用节点上以任何顺序运行它们,将结果存储在共享目录中,并在所有999个作业完成后让一个依赖作业(在slurm中为sbatch --dependency=)处理共享目录。用DASK能做到这一点吗?
这似乎是该体系结构的一个基本限制,即所有作业都需要并行运行,并且用户必须指定并行度。
发布于 2019-05-18 23:08:47
你的理解不正确。Dask可以运行少于指定数量的作业,正如您所要求的那样。它将使用到达的任何资源。
https://stackoverflow.com/questions/56150623
复制相似问题