Задний план
У меня есть конвейер анализа изображений с распараллеливанием шагов. Конвейер находится в python
, а распараллеливание контролируется dask.distributed
. Минимальная настройка обработки состоит из 1 планировщика + 3 рабочих по 15 процессов в каждом. На первом коротком этапе анализа я использую 1 процесс / рабочего, но всю оперативную память узла, затем на всех остальных этапах анализа используются все узлы и процессы.
Проблема
Администратор установит HTCondor
как планировщик для кластера.
Мысль
Чтобы мой код работал в новой настройке, я планировал использовать подход, показанный в dask manual for 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? Спасибо за помощь!