Boost.MPI против Boost.Asio - PullRequest
       8

Boost.MPI против Boost.Asio

7 голосов
/ 06 ноября 2010

Добрый день!

Какая разница между этими библиотеками?

Я читаю документы MPI и имею небольшой опыт работы с asio.Для меня это разные реализации сетевого взаимодействия и не более.

Но каждая из них вводит разные абстракции (я не уверен насчет одинакового уровня этих абстракций), что приводит к разному дизайну приложения.

Когда я должен использовать одну библиотеку или другую?Что я должен знать для выбора правильного решения в каждой отдельной ситуации?

Да, Asio хорош для нескольких узлов (и в целом очень общей структуры), но почему MPI менее подходит для таких задач?Я не думаю, что зависимость от библиотеки MPI C является ограничительной или MPI трудно понять, а как насчет масштабируемости?С помощью Asio мы можем реализовать такие вещи, как вещание и другие, и, с другой стороны, MPI не запрещает писать простые сетевые приложения.Является ли концептуально трудным переписать специфичную для Asio логику с MPI, если это необходимо?

Как насчет сокетоподобных коммуникаций: если это обязательно, мы можем инкапсулировать такую ​​в модуле на Asio или любой другой платформе и все еще использовать MPI длядругие коммуникации.

Для меня сокеты и стандарт MPI - это разные сетевые сервисы, и неясно, что является фундаментальным в реальном мире, где расстояние от простой пары клиент-сервер до некоторых средних вычислений - это один шаг.Также я не думаю, что MPI имеет значительные издержки по сравнению с Asio.

Может быть, это плохой вопрос, и все, что нам нужно, это что-то вроде ICE (Internet Communications Engine)?Поддержка различных языков и опять-таки (как уверяет ZeroC) отличная производительность.

И, конечно, я никогда не видел ни одной темы документации, такой как «не используйте эту библиотеку для нее!».

Я просто не могу принять такое разобщение: в одном случае это сокеты, в другом - асинхронные сообщения и, наконец, тяжелая платформа промежуточного программного обеспечения.Где ясность в жизненном цикле разработки?Может быть, это не честный вопрос, но для того, чтобы начать сокращать этот зоопарк, нам нужен какой-то момент.

Ответы [ 2 ]

5 голосов
/ 07 ноября 2010

Каждая библиотека решает разные проблемы, они не пересекаются. Это также зависит от того, что вы пытаетесь решить, и от шаблонов взаимодействия вашего приложения. Используйте Boost.MPI для масштабируемости, например масштабирования до тысяч или десятков тысяч узлов. В зависимости от базовой сетевой архитектуры, MPI также выделяется при коллективных операциях: сбор, рассеяние, широковещание и т. Д.

Используйте Boost.Asio для уровня абстракции сокета, если вам требуется всего несколько узлов, таких как один сервер и некоторые клиенты. Я бы предложил использовать Boost.Asio, если вы еще не используете дистрибутив MPI.

3 голосов
/ 06 ноября 2010

Я не использовал их оба, но Boost.ASIO - это скорее уровень абстракции для сетей на низком уровне, тогда как Boost.MPI реализует стандарт MPI, который позволяет создавать распределенные вычислительные системы.

Так что, если вам понадобится, скажем, общение в виде сокета, я бы выбрал ASIO. Если вы хотите выполнять распределенные вычисления и, возможно, даже взаимодействовать с программами MPI, написанными на других языках / для других платформ, используйте Boost.MPI.

...