У меня есть программа MPI, в которой главный узел ожидает, пока не будет выполнено определенное количество задач (скажем, 1000) подчиненными узлами. Подчиненные узлы через некоторое время (True) l oop продолжают генерировать выходные данные из своих задач. Время выполнения этих задач может варьироваться в зависимости от задач и узлов, поэтому, если есть 2 подчиненных узла, и мастер должен ждать, скажем, 1000 задач, то подчиненный узел-1 мог бы выполнить 450 задач, а подчиненный узел-2 - остальные 550. .
Каков наилучший способ для подчиненных узлов «сообщить» главному узлу, что в общей сложности 1000 задач были выполнены? Мне кажется, что мне нужна какая-то общая очередь для всех процессов, где ведомые могут собирать данные sh после выполнения своей задачи, и мастер просто опрашивает размер этой очереди, пока он не достигнет 1000. Впоследствии мастер может использовать данные из этой очереди, чтобы сбросить размер очереди для подчиненных, чтобы заполнить больше данных.