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


int MPI_Sendrecv (void* sendbuffer, int sendcount, MPI_Datatype



Pdf көрінісі
бет16/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   12   13   14   15   16   17   18   19   ...   53
ParProg MPI OpenMP

int MPI_Sendrecv (void* sendbuffer, int sendcount, MPI_Datatype 
senddatatype, int dest, int sendtag, void* recvbuffer, int recvcount
MPI_Datatype recvdatatype, int src, int recvtag MPI_Comm comm, 
MPI_Status* status), где
• sendbuffer – адрес массива передаваемых данных;
• sendcount – количество элементов в массиве;
• senddatatype – тип передаваемых элементов;
• dest – ранг адресата;
• sendtag – тег передаваемого сообщения;
• recvbuffer – адрес буфера для приема;
• recvcount – количество элементов в буфере приема;
• recvdatatype – тип элементов в буфере приема;
• src – ранг источника;
• recvtag – тег принимаемого сообщения;
• comm – коммуникатор;
• status – структура с дополнительной информацией.
Функция копирует данные из массива sendbuffer процесса с рангом 
src в буфер recvbuffer процесса с рангом dest.
Другая полезная функция:
int MPI_Sendrecv_replace (void* buffer, int count, MPI_Datatype 
datatype, int dest, int sendtag, int src, int recvtag MPI_Comm comm, 
MPI_Status* status).
Использует только один буфер, также передавая данные с процесса 
src на процесс dest.
2.5 Коллективные взаимодействия процессов 
 
В операциях коллективного взаимодействия процессов участвуют 
все процессы коммуникатора. Соответствующая процедура должна быть 
вызвана каждым процессом, быть может, со своим набором параметров. 
Возврат из процедуры коллективного взаимодействия может произойти в 
тот момент, когда участие процесса в данной операции уже закончено. 
Как и для блокирующих процедур, возврат означает то, что разрешен 
свободный доступ к буферу приема или посылки. Асинхронных 
коллективных операций в MPI нет [5]. 
В 
коллективных 
операциях 
можно 
использовать 
те 
же 
коммуникаторы, что и были использованы для операций типа точка-точка. 
MPI гарантирует, что сообщения, вызванные коллективными операциями, 
никак не повлияют на выполнение других операций и не пересекутся с 


21 
сообщениями, 
появившимися 
в 
результате 
индивидуального 
взаимодействия процессов. 
Нельзя рассчитывать на синхронизацию процессов с помощью 
коллективных операций. Если какой-то процесс уже завершил свое 
участие в коллективной операции, то это не означает ни того, что данная 
операция завершена другими процессами коммуникатора, ни того, что она 
ими начата. 
В коллективных операциях не используются идентификаторы 
сообщений.


Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   53




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

    Басты бет