Я работаю над DMTCP (http://dmtcp.sourceforge.net/) и изучаю разработку приложения, которое работает на нескольких удаленных компьютерах и вычисляет результат с помощью сообщений. Например, для вычисления последовательности Фибоначчи для 3 машин A, B, CРаспределенное приложение C++ с использованием передачи сообщений
вычисляет начальный номер и посылает этот результат B
В принимает результатов, на которую и использует это, чтобы вычислить следующее число и посылает это к C.
- C затем вычисляет следующее число и отправляет A и так далее.
Я пытаюсь создать такое приложение, чтобы я мог проверить его, чтобы перезапустить его из отказа. Однако я не мог представить код для такого приложения. Это мой первый опыт работы с любым распределенным приложением.
Любая помощь будет высоко оценен :)
Спасибо :)
UPDATE: Как было предложено, моя машина не кластер, но у меня есть несколько машин с их индивидуальными ОС, подключенных через LAN друг с другом , Моя основная задача - запустить экземпляры моей программы на нескольких машинах, чтобы они могли общаться, как показано выше.
Надеюсь, что это немного уладит вопрос.
Благодарим вас за предложение MPI. Открытый MPI выглядит довольно интересным в этом отношении. Тем не менее, я не совсем столкнулся с каким-либо примером кода MPI C++ для удаленного сериализованного распределенного приложения, как я объяснил выше. Не могли бы вы указать мне аналогичный пример в MPI, где такое приложение было реализовано. Кроме того, какие учебные пособия я могу использовать для разработки такого приложения. – Nitinder
Если ваш компьютер еще не является кластером, вы можете либо установить необходимое программное обеспечение, чтобы сделать его в кластере, либо обойтись без MPI. Основным программным компонентом, который необходим для кластера, является планировщик заданий, такой как SLURM. Когда у вас установлен планировщик заданий, вам нужно настроить его так, чтобы он знал, какие разные серверы принадлежат кластеру. Это просто одноразовая, административная задача. К сожалению, я не знаю подробностей этого, поскольку я никогда не настраивал кластер самостоятельно. После того, как кластер настроен, вы просто назначаете задание и используете 'mpiexec' для запуска своего приложения. – cmaster
Что касается документации MPI: MPI - это стандарт, который доступен в Интернете (http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf). Он определяет привязки для C и fortran (да, fortran по-прежнему довольно большой в высокопроизводительных вычислениях, к сожалению), но не для C++. Причина отсутствия привязок C++ заключается в том, что вы можете просто использовать интерфейс C из программы на C++. Вы можете найти введение, как использовать MPI здесь (https://computing.llnl.gov/tutorials/mpi/), он также включает пример кода в C и fortran (нет C++, код на C++ будет почти идентичен C). – cmaster