我在MPI中實現了一個程序,其中主進程(rank = 0)應該能夠接收來自其他進程的請求,這些進程請求僅由根。 如果我使MPI_Recv(...)的級別爲0,我必須指定向root發送請求的進程的級別,但我無法控制它,因爲進程沒有按1,2的順序運行, 3,.... 如何接收來自任何等級的請求並使用發送過程的號碼向其發送必要的信息?來自未知源的MPI recv
24
A
回答
44
這裏假定您使用的是C語言。在C++和Fortran中有類似的概念。您只需在MPI_recv()
中指定MPI_ANY_SOURCE
作爲源。狀態結構包含消息的實際來源。
int buf[32];
MPI_Status status;
// receive message from any source
MPI_recv(buf, 32, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
int replybuf[];
// send reply back to sender of the message received above
MPI_send(buf, 32, MPI_INT, status.MPI_SOURCE, tag, MPI_COMM_WORLD);
2
MPI_ANY_SOURCE是顯而易見的答案。
但是,如果所有等級都將發送排名爲0的請求,那麼MPI_Irecv與MPI_Testall結合使用也可能會作爲模式。這將允許以任何順序執行MPI_Send調用,並且可以按照MPI_Irecv調用匹配的順序來接收和處理該信息。
相關問題
- 1. 來自未知來源的MPI異步廣播
- 2. ConfigurationManager.Read閱讀來自未知來源
- 3. com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(未知來源)
- 4. Servlet:未知來源
- 5. FirebaseStorage.getReferenceFromUrl(未知來源)
- 6. ClassNotFoundException(未知來源)
- 7. MPI發送recv混淆
- 8. MPI Recv數據被破壞
- 9. 未知郵件大小的MPI非阻塞發送和recv和mpi_iprobe()
- 10. 未知來源的NulPointerException
- 11. 在未知來源的java.lang.NullPointerException
- 12. 未知來源設置android
- 13. Plone-Theme navtree.css未知來源
- 14. 來自未知來源的頁面高度
- 15. 轉換來自未知來源的C#數據類型
- 16. 來自未知來源的Android應用程序
- 17. MPI非阻塞發送/ recv的
- 18. Android Firebase通知(未知來源)錯誤
- 19. 用boost :: mpi :: packed_oarchive和packed_iarchive傳遞未知子類的MPI傳輸
- 20. MPI發送recv輸入參數
- 21. FirebaseMessagingService.zzo上的NullPointerException(未知來源)
- 22. 限制來自未知源的openid-connect userinfo請求
- 23. Datatable請求來自數據源行0的未知參數'2'
- 24. 如何包裝來自未知源的對象
- 25. Proguard和Libgdx NullPointerException在未知來源
- 26. java.lang.NoSuchMethodError:org.semanticweb.HermiT.Reasoner。 <init>(未知來源)
- 27. java.lang.NoClassDefFoundError:com.google.android.gms.R $ string com.google.android.gms.common.internal.zzam。 <init>(未知來源)
- 28. 掃描儀:java.util.Scanner.next(未知來源)問題
- 29. java.net.MalformedURLException java.net.URL。 <init>(未知來源)
- 30. 未知來源檢查網站?
非常感謝!我不知道它,但非常有用 – shkk 2010-12-03 20:09:55