2010-11-25 74 views
3

是否存在允許使用MPI發送/接收可變大小消息的庫調用?MPI中可變大小的消息

解決方法是在第一條消息中發送數據大小,並將其與實際有效負載一起發送,但我想知道是否有將這兩條單獨消息合併的約定。

+0

在一般情況下,大小和有效負載的兩條消息是傳遞消息的首選方法,其中大小直到運行時才知道。 – 2010-11-29 17:37:15

+0

這是解決方法,但並非簡單,因爲這兩條消息可能會干擾另一個線程中的另一對消息。 Douglas Gregor和其他人在本文中討論了線程安全的方法https://www.researchgate.net/publication/228737912_Dynamically-Sized_Messages_in_MPI-3,並以此爲標準方法來做到這一點。 – alfC 2017-10-22 03:32:35

回答

2

提供給MPI_Recv的計數僅爲上限。 MPI_Get_count可用於查找收到的物品的確切數量。

有點像我認爲的插座。

2

您也可以使用MPI_ProbeMPI_Iprobe而不是發送接收MPI_RecvMPI_Irecv。如果使用不正確,Probe/Iprobe可能會有性能上的缺陷,但它們是處理可變大小消息的常用方法。另外,在多線程環境中要小心,因爲Probe/Iprobe在某些多線程環境中不安全。有關這些問題的詳細討論,請參閱Hoefler et al.,以及可能包含在MPI-3中的修正草圖(Mprobe)。