我有一個網絡,進程向其鄰居發送一個隨機消息,同時接收來自其鄰居的消息。 我可以使用套接字和線程來完成它。一個線程接收消息,另一個線程向隨機選擇的鄰居發送消息。使用MPI_SEND和MPI_RECV可以實現嗎?使用MPI同步發送和接收
回答
您可以在多線程環境中使用MPI調用。檢查MPI_Init_thread功能和本白皮書的手冊:http://www.mcs.anl.gov/~thakur/papers/mpi-threads.pdf。請注意,MPI-1標準不要求實現是線程安全的,只有MPI-2(但您使用的實現最可能是MPI-2)。
謝謝。多線程是唯一的選擇,還是理論上可以使用非阻塞發送和接收來實現這一點? – arunmoezhi 2013-02-13 17:48:56
如果不詳細瞭解你的代碼正在做什麼,很難說,也許有可能以某種方式重新排列算法,然後使用非阻塞調用。另一方面,過去我遇到過非常類似的問題 - 我正在進行並行排序,並且需要同時發送和接收消息;我發現的唯一解決方案是使用兩個線程和套接字(當時MPI-2尚不存在,所有可用的MPI-1實現都不是線程安全的)。 – miy 2013-02-13 18:10:47
謝謝。假設我有3個等級,每個等級需要向其他等級發送2個消息。例如,Rank1向Rank1發送2條消息,向Rank1發送2條消息。總共每個等級發送4條消息。但每次發送之間的時間間隔是隨機的。我不想在每個sendrecv之間放置一個同步塊。 – arunmoezhi 2013-02-13 20:29:21
- 1. 發送和接收使用MPI
- 2. MPI - 發送和接收列
- 3. 如何同步發送和接收?
- 4. MPI發送和接收死鎖
- 5. MPI發送和接收(多對多)
- 6. 在MPI中使用非阻塞發送和阻塞接收?
- 7. MPI緩衝發送/接收指令
- 8. 多個客戶端異步連接,同步發送/接收
- 9. 發送到MPI中的不同進程並從其接收
- 10. 使用MPI發送/接收對象數組
- 11. 如何使用所有處理器在MPI中發送/接收
- 12. MPI中的接收和接收:收到不同的值?
- 13. 接收者和發送者之間的MPI_Bcast同步
- 14. 隱含的發送者和接收者同步MPI_BCAST?
- 15. 如何同步客戶端的發送幀和接收幀?
- 16. 他們在發送和接收什麼格式的同步
- 17. 發送和接收消息 - mqlight同步模式
- 18. Java Datagram發送和接收不保持同步
- 19. 發送ajax請求和接收響應(同步)
- 20. 如何修改MPI阻塞發送和接收到非阻塞
- 21. MPI發送和接收不與工作更然後8182雙
- 22. MPI Fox的算法非阻塞發送和接收
- 23. MPI連續發送和接收循環中的消息
- 24. MPI如何發送和接收未知數據類型
- 25. MPI發送和接收錯誤沒有運行
- 26. 重複使用相同的套接字發送和接收(Python)
- 27. Select()使用相同套接字描述符發送和接收
- 28. 是否可以使用BeginConnect同步Socket的發送和接收方法?
- 29. 同時接收和發送數據報
- 30. UdpClient同時接收和發送
你的意思是發送和接收的非阻塞版本? – arunmoezhi 2013-02-13 17:25:34
沒關係。其實,我很難理解你的問題來回答它。 – nhahtdh 2013-02-13 17:29:50
我試過使用它,但我需要把發送放在一個隨機發送消息的循環中。在執行循環期間,排名應該會收到任何發送給它的消息 – arunmoezhi 2013-02-13 17:32:15