文件名称:消息发送模式-grid layout in css
文件大小:1018KB
文件格式:PDF
更新时间:2024-07-05 18:55:27
MPI
§3.2 消息发送模式 MPI 共有四种模式的消息发送函数. 这些函数具有完全一样的入口参数, 但它们发送消息的方式 或对接收方的状态要求不同. 标准模式 (standard mode) 由 MPI 系统来决定是否将消息拷贝至一个缓冲区然后立即返回 (此时 消息的发送由 MPI 系统在后台进行), 还是等待将数据发送出去后再返回. 大部分 MPI 系统预 留了一定大小的缓冲区, 当发送的消息长度小于缓冲区大小时会将消息缓冲然后立即返回, 否则 则当部分或全部消息发送完成后才返回. 标准模式发送被称为是非局部的, 因为它的完成可能需 要与接收方联络. 标准模式的阻塞发送函数为 MPI_Send. 缓冲模式 (buffered mode) MPI 系统将消息拷贝至一个用户提供的缓冲区然后立即返回, 消息的发 送由 MPI 系统在后台进行. 用户必须确保所提供的缓冲区大小足以容下采用缓冲模式发送的消 息. 缓冲模式发送操作被称为是局部的, 因为它不需要与接收方联络即可立即完成 (返回). 缓冲 模式的阻塞发送函数为 MPI_Bsend. 同步模式 (synchronous mode) 实际上就是在标准模式的基础上还要求确认接收方已经开始接收 数据后函数调用才返回. 显然, 同步模式的发送是非局部的. 同步模式的阻塞发送函数为 MPI_Ssend. 就绪模式 (ready mode) 调用就绪模式发送时必须确保接收方已经处于就绪状态 (正在等待接收该 消息), 否则该调用将产生一个错误. 该模式设立的目的是在一些以同步方式工作的并行系统上 由于发送时可以假设接收方已经在接收而减少一些消息发送的开销. 如果一个使用就绪模式的 MPI 程序是正确的, 则将其中所有就绪模式的消息发送改为标准模式后也应该是正确的. 就绪模 式的阻塞发送函数为 MPI_Rsend. 后三种模式的消息发送函数名分别在标准模式消息发送函数 MPI_Send 中加上 B, S 和 R 得到, 并 且四个函数具有完全一样的参数. §3.2.1 阻塞型缓冲模式消息发送函数 C int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 19