2012-05-15 33 views
0

MPI是消息傳遞接口,但是當你想發送一個對象時,你必須在MPI_Send之前序列化。爲什麼MPI不提供序列化接口?

MPI向開發人員公開了通信功能,並提供了許多接口來滿足它。但爲什麼MPI不提供序列化?

我知道序列化不屬於MPI,我不知道在序列化技術中還有什麼值得優化的東西?

謝謝!

+1

正如你已經提到的,序列化是你在更高層次上做的事情,不屬於MPI交易,主要是消息傳遞。此外,MPI實現本質上是C庫(使用C++/Fortran綁定),因此不會有類的概念,因此序列化不適用於MPI標準。 –

回答

0

MPI是一個消息傳遞的平臺無關標準,其操作越簡單,便攜性越高。由於這種簡單性,大多數MPI庫支持異構體系結構 - 您可以在具有不同內部數據表示和甚至不同ABI的16,32和64位機器的混合集羣上運行應用程序。

C++對象的串行化並不簡單也不便攜。您始終可以使用您最喜愛的C++序列化庫並使用MPI消息交換它生成的斑點。 MPI中甚至有一種特殊的類型用於發送二進制數據 - MPI_BYTE

此外,在即將到來的MPI標準版本3.0中,對C++的支持正在被完全刪除,並鼓勵C++程序員改用C函數。

相關問題