消息传递库标准.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MPI消息传递过程 阻塞通信正确返回后,其后果是: - 该调用要求的通信操作已正确完成 - 该调用的缓冲区可用 消息信封要匹配 接收到的消息是最早发送的 非阻塞通信主要用于计算和通信的重叠,从而提高整个程序执行的效率。 请求(request) 这个参数用于非阻塞发送和非阻塞接收操作。由于非阻塞操作返回后,数据可能继续存在缓冲中,由此需要一种机制来检测资源是否可用。根据该变量调用其它函数完成消息的实际发送和接收。在C程序中,这个参数是指向MPI_Request结构的指针。 通讯模式(4种): 标准通信模式(MPI_SEND) 缓存通信模式(MPI_BSEND) 同步通信模式(MPI_SSEND) 就绪通信模式(MPI_RSEND) 标准(standard)模式:对数据的缓冲由具体MPI实现决定,与用户程序无关; 发送操作的正确返回而不要求接收操作收到发送的数据。 标准发送模式 缓存通信模式 同步通信模式 就绪通信模式 在异步通信中,通信可以是异步开始的,也可以是异步结束。发送方或接受方是否返回只取决于单方面的意愿。 异步通信需要系统提供一个消息缓冲区(message buffer),而同步通信则需要制定好一个收/发双方的“握手” (handshaking) 协议。 异步的消息传递原语在实现上又可分为: 阻塞的 ( blocking ) 消息传递 非阻塞的 ( nonblocking ) 消息传递 阻塞的消息传递 阻塞发送:在消息确实已经发送出去(到消息缓冲区)后,才允许进程继续执行下一语句。 阻塞接收:进程处于挂起状态,直到可以在消息缓冲区确切地接收到消息后,才允许进程继续执行下一语句。 此处阻塞的含义与同步操作是类似的。 非阻塞的消息传递 非阻塞发送:发送原语通知系统将要发送的消息在消息缓冲区中后,即可返回。发送进程可继续执行后续工作, 无须等待系统真正发送消息。 非阻塞接收:接收原语不管消息缓冲区中是否已有发送原语发送的消息,都将返回。 非阻塞的消息传递 当消息被确切地发出或收到时,系统将用中断信号通知发送方或接受方。 在此之前,它们可以周期性地查询、暂时挂起或执行其它计算,以实现计算与通信的重叠。 采用非阻塞的消息传递将导致程序调试困难。 不论是阻塞通信还是非阻塞通信,都属于异步通信机制。 其设置目的在于让通信与计算重叠,提高并行执行效率。但其付出的代价是系统要提供消息缓冲区。 MPI点对点通信类型及模式汇总 集合通信函数 集合通信是包含在通信因子中的所有进程都 参加操作。 集合通信一般实现三个功能 通信:组内数据的传输 同步:组内所有进程在特定的地点在执行 进度上取得一致 计算:对给定的数据完成一定的操作 集合操作的三种类型: 同步(barrier):集合中所有进程都到达后,每个进程再接着运行; 数据传递:广播(broadcast)、分散(scatter)、收集(gather)、全部到全部(alltoall); 规约(reduction):集合中的其中一个进程收集所有进程的数据并计算(如:求最大值、求最小值、加、乘等); 集合通信函数 MPI_Barrier MPI_Bcast MPI_Scatter MPI_Gather MPI_Scan MPI_Reduce MPI_Barrier() 在组中建立一个同步栅栏。当每个进程都到达MPI_Barrier调用后,程序才接着往下执行: MPI_Barrier (comm) 程序7、同步示例 #include “mpi.h” #include “test.h” #include stdlib.h #include stdio.h int main(int argc,char * * argv) { int rank,size,I; int *table; int errors=0; MPI_Aint address; MPI_Datatype type,newtype; int lens; MPI_Init( argc,argv); MPI_Comm_rank (MPI_COMM_WORLD,rank); MPI_Comm_size (MPI_COMM_WORLD,size);

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档