Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2


 Функции распределения и сбора данных



Pdf көрінісі
бет20/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   16   17   18   19   20   21   22   23   ...   53
ParProg MPI OpenMP

2.5.4 Функции распределения и сбора данных 
 
При программировании часто возникает задача распределения 
массива данных по процессам некоторыми регулярными "кусками". 
Например, распределение матрицы, нарезанной вертикальными лентами. 
Возникает и обратная задача 
– сбор на некотором выделенном процессе 
некоторого набора данных, распределенного по всем процессам [7]. 


25 
Рис. 2.3. Распределение данных 
Распределение и сбор данных осуществляется с помощью вызовов 
процедур MPI_Scatter и MPI_Gather.
int 
MPI_Scatter(void* 
sendbuf, 
int 
sentcount, 
MPI_Datatype 
senddatatype, void* recbuf, int reccount, MPI_Datatype recdatatype,int 
root,MPI_Comm comm), где:
• sendbuf – адрес буфера для передачи данных;
• sentcountколичество элементов, передаваемых на каждый 
процесс (общее количество элементов в буфере равно произведению 
sentcount на количество процессов в коммуникаторе);
• senddatatype – тип передаваемых данных;
• recbuf – буфер для приема данных;
• reccount – размер буфера recbuf;
• recdatatype – тип данных для приемки;
• root – ранг процесса, с которого рассылаются данные;
• comm – коммуникатор.
При вызове этой процедуры произойдет следующее. Процесс с 
рангом root произведет передачу данных всем другим процессам в 
коммуникаторе. 
Каждому 
процессу 
будет 
отправлено 
sendcount 
элементов. Процесс с рангом 0 получит порцию из sendbuf, начиная с 0-го 
и заканчивая sendcount-1 элементом. Процесс с рангом 1 получит порцию, 
начиная с sendcount, заканчивая 2* sendcount-1 и т.д.
Подпрограмма MPI_Gather собирает данные от остальных 
процессов.


Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет