MPI常用函数速查表
MPI_Send(buf,count,datatype,dest,tag,comm)
MPI_Recv(buf,count.datatype,source,tag,comm.&status)
for(int i=1;i<numprocs;i++)
{
MPI_Send(buf,count,datatype,i,tag,comm)
}
與MPI_Bcast(buf,count,datatype,root,comm)的區(qū)別是什么?
1. 標準通信模式中,理論上send會阻塞直到目標進程recv執(zhí)行接收數(shù)據(jù)后send才會返回。但是這種模式下MPI環(huán)境基本上會對發(fā)送進程send的數(shù)據(jù)進行緩沖,這時即使接收進程沒有進行recv發(fā)送進程的send也會立即返回。如果發(fā)送數(shù)據(jù)超過MPI提供的緩沖區(qū)大小,那么send就會阻塞到緩沖區(qū)這里。
??? int MPI_Send(void *buf , int count , MPI_Datatype datatype , int dest , int tag , MPI_Comm comm);
??? int MPI_Recv(void *buf , int count , MPI_Datatype datatype , int source , int tag ,MPI_Comm comm , MPI_Status *status);
send和recv是非對稱的。recv會因為沒有接收到目標進程的消息而阻塞,不過可以指定接收進程接收通用信封:MPI_ANY_SOURCE(任意源進程),MPI_ANY_TAG(任意標志)。(關于標志tag后面再討論)然后可以從返回的MPI_Status的成員MPI_SOURCE和MPI_TAG中解讀出相關信息。
?????? 發(fā)送進程向自己send數(shù)據(jù)是直接阻塞引發(fā)死鎖,這個暫時沒搞明白。
總結
以上是生活随笔為你收集整理的MPI常用函数速查表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell script input a
- 下一篇: 工作计划2017-01-03