При чтении Dask-Jobqueue (https://jobqueue.dask.org/en/latest/), и при тестировании на нашем кластере SLURM кажется, что когда вы устанавливаете cluster.scale(n)
и создаете client = Client(cluster)
, ни одно из ваших заданий не может запускаться, пока всеn
ваших заданий могут быть запущены.
Предположим, у вас есть 999 заданий для запуска и кластер с 100 узлами или слотами; еще хуже, предположим, что другие люди совместно используют кластер, и, возможно, некоторые из них имеютдолгосрочные задания. Администраторам иногда необходимо выполнять обслуживание некоторых узлов, чтобы они добавляли и удаляли узлы. Вы никогда не знаете, сколько параллелизма вы сможете получить. Вы хотите, чтобы планировщик кластера просто выполнял 999 заданий (вslurm, они будут отправлены через sbatch
), запускаются в любом порядке на любых доступных узлах, сохраняют результаты в общем каталоге и имеют зависимое задание (в slurm, которое будет sbatch --dependency=
) обрабатывать общий каталог послевсе 999 заданий завершены. Возможно ли это как-то с помощью DASK?
Кажется фундаментальным ограничением архитектуры, что все задания должны выполнятьсяпараллельно, и пользователь должен указать степень параллелизма.