#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-адреса, соответствующие подмножеству компьютеров, на которых выполняется ваша программа, а затем связываться с уже запущенными экземплярами вашей программы, предоставляя им любую информацию, которой у них еще нет, о том, какую часть работы им предстоит выполнить.
Рабочая программа, запущенная на многих компьютерах, является «сервисом», а программа-отправитель заданий — «клиентом».