Параллельные вычисления в SLURM не всегда завершаются после sys.exit (0) в Python - PullRequest
0 голосов
/ 03 октября 2019

Этот вопрос повторяет предыдущий вопрос Почему «кроме: передать» плохую практику программирования? в приложении к SLURM инструменту для параллельных вычислений. Я понимаю, что это может быть не лучшее место, чтобы спросить, но буду благодарен за любой совет.

Как это работает с slurm, я использую команду sbatch, чтобы отправить файл script.sh для параллельных вычислений с различнымипараметры. Моя script.sh может быть упрощена до основной команды srun python3 py_script.py. Я опустил ненужные детали.

Наконец, py_script.py содержит следующий бесконечный цикл (количество прогонов заранее неизвестно):

import sys

while True:
    try:
        <calculate condition>
        if condition == 0:
            print("Finishing.")
            sys.exit(0)
        <do stuff otherwise>

    except Exception as e:
        print("Encountered error" + e )
        sys.exit(-1)

    print('Calculating')
    <do calculations>

Моя проблема в том, что когда condition==0 выполнено (я проверял, что это всегда происходит), скрипт выводит «Finishing» в выходной файл, но, очевидно, продолжает работать, как если бы sys.exit(0) не был обработан SLURM. Я вижу бегущий код (R) в выводе squeue. В то же время я уверен, что цикл остановился, потому что я больше не вижу «Расчет» печати в журнале, и журнал больше не обновляется. Так что это не проблема, упомянутая в sys.exit (), не выходящая из python . Я подумал, что это может быть из-за того, что я нахожусь в блоке try... catch..., но ответы на предыдущий вопрос Почему «кроме: пройти» плохая практика программирования? ясно указывают, что Exception невключите такие вещи, как SystemExit, чтобы я мог выйти. Что меня еще больше раздражает, так это то, что такое поведение не всегда происходит, а только при некоторых запусках из пакета (все похожие). Это также, похоже, не произошло до последнего обновления системы SLURM, но здесь я не уверен.

Кто-нибудь имеет какое-либо представление о том, что может происходить?

Можетэто будет такой же вопрос, как здесь? R параллельное зависание задания

...