与MPI_Send/MPI_Recv不同的是,其他涉及集体通信的函数(例如MPI_Bcast/MPI_Gather)没有“标记”参数。是什么原因?为什么MPI集体通信中使用'Tag'参数?
1
A
回答
1
不同点至点操作,非阻塞的集体操作不匹配 阻塞集体行动,集体行动没有标签的说法。所有的 进程必须以每个通信者相同的顺序调用集体操作(阻塞和非阻塞) 。特别是,一旦一个进程调用一个集体操作,通信器中的所有其他进程必须最终调用相同的集体操作,并且不会与其他集体操作之间存在相同的通信器。
当涉及非阻塞通信时,标签非常有用。您可能想知道为什么我们有阻止操作的标签参数。在p2p通信的情况下,这是因为阻塞操作可以匹配非阻塞操作。如上所述,在集体通信的情况下,阻塞和非阻塞操作不匹配,因此不需要标签。里斯托·利维的评论后
编辑:我作出虚假的假设误解的说法。我将注释复制到答案:
标签与匹配阻塞与非阻塞 通信无关。集体没有标签,因为标准施加了限制,即给定的通信器中的所有等级都调用相同的集体操作序列 ,并且以相同的顺序,这使得 标签无用。此外,在MPI-3.0中引入了非阻塞集体。
相关问题
- 1. MPI集体通信
- 2. MPI集体参数分配
- 3. MPI点对点通信到集体通信:MPI_Scatterv问题
- 4. mpi从一个通信器到另一个通信器的集体操作
- 5. 为什么我得到“在函数体外使用参数'N'”?
- 6. 在DAvg中使用子窗体记录集作为域参数
- 7. MPMD MPI执行中的通信
- 8. 为什么groovy不使用classpath参数?
- 9. 为什么Tag属性不被更新?
- 10. 为什么WP自动完成a-tag?
- 11. 作为通用参数的具体类
- 12. 集实体参数
- 13. 为什么英特尔MPI使用DAPL和OpenMPI本机ibverbs?
- 14. 具有集体功能的MPI死锁
- 15. 为什么在参数计数方面不是通用的?
- 16. JSP中TAG Libraries有何用处以及我们为什么使用它?
- 17. TAG的价值是什么?
- 18. mongodb中的db.mydb.find({tag:'java'})。count()和db.mydb.count({tag:'java'})有什么区别
- 19. MPI:获取通信器中的节点数(不是进程)
- 20. 如何使用MPI组织异步通信?
- 21. 为什么使用redis进行websocket通信?
- 22. 为什么这种调用通用参数失败的方法?
- 23. 为什么NHibernate更新参考实体?
- 24. 为什么我们可以使用阵列的通用参考
- 25. 线程安全的MPI通信
- 26. 为什么我有Ajax通信问题?
- 27. 为什么我不能使用char作为函数的参数?
- 28. Appcelertor Titanium中$ tag的含义是什么
- 29. 为什么不优化火车数据集上的超参数?
- 30. 为什么不能通过void来使用不带参数的函数?
标签与将阻塞与非阻塞通信进行匹配无关。集体没有标签,因为该标准强加给定通信器中的所有等级调用相同序列的集体操作并且以相同顺序使标签无用的限制。此外,在MPI-3.0中引入了非阻塞集体。 –
请注意,标签有时用于将消息发送到同一MPI任务的不同线程。由于MPI标准规定两个线程不能同时调用涉及相同通信器的集体操作,因此集体上不存在这样的事情。 –