2012-05-15 2 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 메시지를 사용하여 생성 한 BLOB를 교환 할 수 있습니다. 바이너리 데이터를 전송하기위한 특별한 유형의 MPI도 있습니다 (MPI_BYTE).

게다가 C++에 대한 지원은 향후 출시 될 MPI 표준 버전 3.0에서 완전히 제거되고 있으며 C++ 프로그래머는 대신 C 함수를 사용하는 것이 좋습니다.

관련 문제