Переносная сеточная платформа двигателя

Я ищу распределенную вычислительную платформу, которая может быть легко встроена в приложение.

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

Вы, пользователи SO, знаете такую ​​платформу (желательно с открытым исходным кодом)? Кроме того, для того, чтобы принять решение, было бы неплохо использовать некоторые примеры использования.

Я заинтересован в кроссплатформенном решении, если это возможно, поскольку станции в локальной сети, где должно быть развернуто решение, неоднородны.

Любые предложения и особенно примеры кода высоко ценятся.

2 ответа

Решение

Помимо MPI на ум приходят четыре системы: AMQP, ZeroMQ, Cilk и Actors.

AMQP использует передачу сообщений для связи между системами, используя центральный брокер сообщений для обработки / распространения сообщений. Некоторые реализации гарантируют правильную доставку получателю, но работают медленнее (аналогично TCP). Некоторые реализации запускаются и забываются, запрещая гарантированную доставку, но работают быстрее (аналогично UDP). Примечание. AMQP - это протокол, а не реализация. Популярные реализации включают ActiveMQ и RabbitMQ.

ZeroMQ немного похож на AMQP минус центральный брокер сообщений. Я полагаю, что в основном это стиль актеров, где он более программный, позволяет вам проектировать вашу систему сквозным образом. Он децентрализован (без центрального брокера сообщений), и тесты показывают, что он намного быстрее, чем реализации AMQP.

У меня нет большого опыта работы с Cilk, за исключением того факта, что это хорошо поддерживаемый проект от MIT, предназначенный для работы с C/C++.

Актеры - это абстракция, которая помогает как с локальным / распределенным параллелизмом, популяризированным Эрлангом, так и совсем недавно, проектом Akka (Scala, Java). C++ совместимые версии, о которых я знаю, это Theron, Actor-CPP и libcppa, хотя я не уверен, какие из них поддерживают удаленных актеров.

Я думаю, что Hazelcast - это такая вещь; встраиваемые распределенные вычисления. Но это на Java, а не на C. Но вы можете вызвать C из Java.

Другие вопросы по тегам