Скрипт python, запущенный с mpirun, не останавливается, если выполнить assert на процессоре 0 не удается
У меня есть сценарий Python с набором операций, выполняемых параллельно, с библиотекой mpi4py. В конце операций процессор с рангом 0 выполняет проверку утверждения. Если завершение не удается, процесс должен остановиться и программа завершится. Тем не менее, программа не завершается, и это, я думаю, потому что другие процессоры держат. Как заставить программу завершить выполнение в случае сбоя assert? Я запускаю вещи командой:
mpirun -np 10 python myscript.py
и тогда у меня есть строка в коде, как:
if rank ==0:
assert mytest()==0
1 ответ
Решение
Вместо того, чтобы утверждать, вы должны прервать.
https://planet.scipy.org/docs/apiref/mpi4py.MPI.Comm-class.html
if rank == 0:
if mytest() === 0:
comm.Abort()