Фон
У меня есть конвейер анализа изображений с распараллеленными шагами.Трубопровод находится в python
, а распараллеливание контролируется dask.distributed
.Минимальная настроенная обработка имеет 1 планировщик + 3 рабочих с 15 процессами каждый.На первом коротком шаге анализа я использую 1 процесс / рабочий, но всю оперативную память узла, затем на всех других этапах анализа используются все узлы и процессы.
Проблема
Администратор установитHTCondor
как планировщик для кластера.
Thought
Для того, чтобы мой код работал на новой установке, я планировал использовать подход, показанный в руководстве dask для SGE , поскольку кластер имеетфайловая система с общей сетью.
# job1
# Start a dask-scheduler somewhere and write connection information to file
qsub -b y /path/to/dask-scheduler --scheduler-file /path/to/scheduler.json
# Job2
# Start 100 dask-worker processes in an array job pointing to the same file
qsub -b y -t 1-100 /path/to/dask-worker --scheduler-file /path/to/scheduler.json
# Job3
# Start a process with the python code where the client is started this way
client = Client(scheduler_file='/path/to/scheduler.json')
Вопрос и совет
Если я правильно понял с этим подходом, я начну планировщик, рабочих и анализ как независимые задания (различные HTCondor представляют файлы).Как я могу убедиться, что порядок выполнения будет правильным?Есть ли способ, которым я могу использовать тот же подход обработки, который я использовал раньше, или будет более эффективным, чтобы перевести код для лучшей работы с HTCondor?Спасибо за помощь!