Теперь у меня есть приложение, состоящее из одного мастера и множества рабочих. Требования к приложению очень просты: рабочие завершают некоторые задания и отправляют данные в мастер, а мастер хранят эти данные в файлах по отдельности. Я могу просто использовать MPI_Send на рабочей стороне для отправки данных мастеру. Но мастер не знает последовательность отправки данных. Некоторые рабочие идут быстро, а некоторые - медленно. Более конкретно, предположим, что есть 5 рабочих, тогда последовательность отправки данных может быть 1,3,4,5,2 или 2,5,4,1,3. Если я просто напишу цикл for (i = от 1 до 5) на стороне мастера с MPI_Recv для получения данных, мастер и какой-то более быстрый работник должны ждать долго. Я знаю, что MPI_Gather может реализовать это. Но я не уверен, что MPI_Gather работает параллельно или просто некоторые последовательные вызовы MPI_Recv? Другая проблема заключается в том, что мои данные чрезвычайно велики, для отправки мастеру требуется более 1 ГБ данных. Если я разделю данные на соединительные линии, это может сделать их более сложными. Я не думаю, что MPI_Gather может работать. Я также пытался думать о программировании сокетов, но я не думаю, что это хорошая практика. Не могли бы вы дать мне предложение, пожалуйста?