Как запустить параллельную программу на нескольких компьютерах (указанные пользователем IP-адреса)?

#c# #parallel-processing

#c# #параллельная обработка

Вопрос:

Я новичок в параллельном программировании. Я много изучил об использовании MPI и модели программирования SOA Windows HPC server. Но сейчас я запутался больше, чем когда-либо. Задача состоит в том, чтобы запустить программу на нескольких компьютерах (IP-адрес будет предоставлен пользователем), эта программа принимает входной файл, полный миллионов строк, и извлекает определенные области. Я завершил программирование (на C # amp; .net4 fw) и успешно протестировал его на одном компьютере. Но проблема в том, что я должен сделать это параллельно, чтобы ускорить процесс. Я просто хочу, чтобы кто-нибудь показал мне направление к подходу, который не предполагает использования MPI. Я надеюсь, что мой вопрос достаточно ясен.

Спасибо.

Ответ №1:

Вы могли бы попробовать Dryad. Он включает в себя LINQ-подобный API.

Комментарии:

1. Dryad был прекращен .

Ответ №2:

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

В зависимости от вашей среды безопасность часто является интересным препятствием для проектов такого типа.

Комментарии:

1. Я думаю, что углублюсь в WCF, моя проблема требует решения, при котором пользователю не нужно устанавливать сторонние службы. Это причина, по которой я пытаюсь избегать HPC и MPI. Биологи в целом не идеальные конечные пользователи !!! … Итак, я хочу сделать это так же просто, как просто ввести IP-адрес и запланировать разделенную обработку данных на этих процессорах. Большое спасибо за предложение.

Ответ №3:

Вы могли бы попробовать переработать свое приложение, чтобы использовать silverlight в качестве клиентских процессоров.

http://www.codeproject.com/KB/silverlight/gridcomputing.aspx

Ответ №4:

Если я правильно понял ваш вопрос, одно из решений — изменить вашу программу так, чтобы она прослушивала какой-нибудь порт для выполнения работы, и запустить ее на нескольких компьютерах. Затем вы хотите, чтобы отправитель заданий работал на одной или нескольких машинах. Отправитель может получать IP-адреса, соответствующие подмножеству компьютеров, на которых выполняется ваша программа, а затем связываться с уже запущенными экземплярами вашей программы, предоставляя им любую информацию, которой у них еще нет, о том, какую часть работы им предстоит выполнить.

Рабочая программа, запущенная на многих компьютерах, является «сервисом», а программа-отправитель заданий — «клиентом».