2012-05-15 3 views
0

MPI - это интерфейс передачи сообщений, но если вы хотите отправить объект, вы должны выполнить сериализацию перед MPI_Send.Почему интерфейс MPI не обеспечивает сериализацию?

MPI предоставляет функции связи разработчикам и предоставляет множество интерфейсов для удовлетворения этого. Но почему нет сериализации поставки MPI?

Я знаю, что сериализация не относится к MPI, и мне интересно, есть ли что-то, что стоит оптимизировать в технологии сериализации?

Спасибо!

+1

Как вы уже упоминали, сериализация - это то, что вы делаете на более высоком уровне и не относящееся к сделкам MPI в основном с передачей сообщений. Кроме того, реализация MPI - это, по сути, библиотеки C (с привязками C++/Fortran), и поэтому не будет иметь понятия классов, и поэтому сериализация не применяется в стандартах MPI. –

ответ

0

MPI - независимый от платформы стандарт для передачи сообщений, и чем проще его работа, тем он более переносимым. Из-за этой простоты большинство библиотек MPI поддерживают гетерогенные архитектуры - вы можете запускать свое приложение на смешанном кластере из 16-, 32- и 64-разрядных машин, которые имеют разные внутренние представления данных и даже разные ABI.

Сериализация объектов C++ никоим образом не проста и не переносима. Вы всегда можете использовать свою любимую библиотеку сериализации C++ и обмениваться с ней блоками, использующими сообщения MPI. В MPI существует даже специальный тип для отправки двоичных данных, как есть - MPI_BYTE.

Кроме того, поддержка C++ полностью удалена в следующей версии 3.0 MPI, а программистам на C++ предлагается использовать функции C вместо этого.

Смежные вопросы