Я ищу распределенную вычислительную платформу, которая может быть легко встроена в приложение.
Я исследовал MPI (и некоторые из его реализаций), но из того, что я увидел, он включает в себя создание исполняемого файла для каждой задачи, который запускается с использованием mpirun
, Я не исключаю его, я просто хочу, чтобы он был встроен в приложение, а не как внешний исполняемый файл (если это возможно).
Вы, пользователи SO, знаете такую платформу (желательно с открытым исходным кодом)? Кроме того, для того, чтобы принять решение, было бы неплохо использовать некоторые примеры использования.
Я заинтересован в кроссплатформенном решении, если это возможно, поскольку станции в локальной сети, где должно быть развернуто решение, неоднородны.
Любые предложения и особенно примеры кода высоко ценятся.
Помимо MPI на ум приходят четыре системы: AMQP, ZeroMQ, Cilk, и актеры.
AMQP использует передачу сообщений для связи между системами, используя центральный брокер сообщений для обработки / распространения сообщений. Некоторые реализации гарантируют правильную доставку получателю, но работают медленнее (аналогично TCP). Некоторые реализации запускаются и забываются, запрещая гарантированную доставку, но работают быстрее (аналогично UDP). Примечание. AMQP — это протокол, а не реализация. Популярные реализации включают ActiveMQ а также RabbitMQ.
ZeroMQ немного похож на AMQP минус центральный брокер сообщений. Я считаю, что в основном это стиль актеров, где он более программируемый, позволяет вам проектировать вашу систему сквозным образом. Он децентрализован (без центрального брокера сообщений), и тесты показывают, что он намного быстрее, чем реализации AMQP.
У меня нет большого опыта с Cilk кроме того факта, что это хорошо поддерживаемый проект от MIT, предназначенный для работы с C / C ++.
Актеры — это абстракция, помогающая как с локальным / распределенным параллелизмом, популяризируемая Erlang, так и совсем недавно Akka проект (Scala, Java). C ++ совместимые версии, о которых я знаю, это Theron, Actor-CPP и libcppa, хотя я не уверен, какие из них поддерживают удаленных актеров.
Я думаю Hazelcast это такие вещи; встраиваемые распределенные вычисления. Но это на Java, а не на C. Но вы можете вызвать C из Java.