parallel-processing - MPI,如果使用非阻塞 i_send 或 i_recv,如果最后有等待,哪个先走有关系吗?
问题描述
如果我打电话或者先做一个 irecv 然后是一个 isend,最后等待MPI_isend
?MPI_irecv
哪个顺序有关系吗?
解决方案
如果我是 MPI_isend 然后是 MPI_irecv 或者先做一个 irecv 然后是一个 isend,最后等待?哪个顺序有关系吗?
MPI_Irecv和MPI_Isend是非阻塞通信程序,因此需要使用MPI_Wait(或使用MPI_Test测试请求是否完成)来确保消息完成,并且发送/接收缓冲区中的数据可以再次安全被操纵。
这里的非阻塞是指不等待数据被读取和发送;而是立即使数据可供读取和发送。但是,这并不意味着数据会立即发送。如果是,就不需要调用 MPI_Wait。
如果您希望程序符合标准并因此可移植,则必须始终等待或测试非阻塞操作。该标准允许实现将实际数据传输推迟到等待/测试调用。一些 MPI 操作(除了等待/测试)会进行非阻塞操作,但不应依赖这种行为。
和
MPI_Isend 不一定在后台进行,只有当 MPI 实现有机会进行时。MPI_Wait 推进操作并保证其完成。一些 MPI 实现可以使用进程线程在后台进行操作。有些不能。它依赖于实现,永远不应依赖于一种或另一种特定行为。
推荐阅读
- python - 如何在不实际创建新副本的情况下删除 numpy 数组中的行或列?
- python - 快速有序查询的数据存储方法
- java - javac:在公用文件夹laravel中找不到文件
- python - Raspberry Pi 启动时音频不工作 (.bashrc)
- java - Arterisk 不能从字符串中拆分出来
- python - 如何从公会 discord.py 中的所有成员中删除多个角色
- python-3.x - 对于灰度到 rgb 问题,我应该使用哪个损失函数?
- sharepoint - SharePoint WebPart 上下文菜单进入 div(请参见图片)
- ios - 传入的 GameCenter 邀请不包含任何玩家
- excel - 如何使用后缀(k、m、g、uF、H 等)对电子值进行排序?