Я пишу код python, используя mpi4py, из которого я импортирую MPI. Затем я установил глобальный коммуникатор MPI.COMM_WORLD и сохранил в переменной comm.Какие операции в mpi4py являются операциями «синхронизации»
Я запускаю этот код с n> 1 потоками, и в какой-то момент все они входят в цикл for (все ядра имеют одинаковое количество итераций для прохождения).
Внутри цикла for у меня есть вызов «comm.reduce (...)». Кажется, что это работает для небольшого количества ядер, но по мере увеличения размера проблемы (с 64 ядрами, скажем), я испытываю, что моя программа «зависает».
Так что мне интересно, связано ли это с вызовом reduce (...). Я знаю, что для этого вызова нужны все потоки (т. Е. Мы запускаем всего 2 потока. Если один поток входит в цикл, а другой не по какой-либо причине, программа зависает, потому что вызов reduce (...) ждет для обоих потоков).
Мой вопрос: ли уменьшить называют «синхронизации» задачи, то есть, он работает как «comm.Barrier()» называют? И, если это возможно, в более общем плане, какие задачи синхронизации (если есть, кроме Барьера)?
Спасибо. Я попробую искать ошибку где-то в другом месте :) – denvar