MPI объединяет массивы из всех рангов по порядку
Я новичок в MPI У меня есть несколько массивов, сгенерированных процессорами. Каждый процессор генерирует один массив разной длины. Как я могу объединить их все в порядке в один массив, хранящийся только в процессоре 0.
Например:
Processor 0: [1 1 1]
Processor 1: [2 2 2]
Processor 2: [3 3 3 3 3]
And my expected result is [1 1 1 2 2 2 3 3 3 3 3], not [1 1 1 3 3 3 3 3 2 2 2]
Кто-нибудь может помочь мне решить эту проблему. Спасибо за чтение:)
1 ответ
Если размеры каждого вклада рангов известны заранее, MPI_Gatherv выполнит эту работу в одном коллективе.
Если размеры каждого вклада рангов не известны заранее, то операции точка-точка (MPI_Send, с MPI_Probe и MPI_Recv) будут простым способом сделать это. Корень может сериализовать операции MPI_Recv и распределять пространство по мере выполнения операции.