PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 июл 18 8:56

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: 24 дек 09 15:03 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
Добрый день! У меня есть задача по организации управления распределенными вычислениями и мне бы хотелось узнать, какие средства можно применить для этого. Я не имею в виду готовые програмные решения в виде менеджеров процессов и диспеетчеров ресурсов. Меня интересует информация о том как самолму создать подобную систему. Я прочитал немало книг и статей и различных алгоритмах планирования, организации ресурсов и управлении процессами таких как метод опережающего плданирования, backfill алгоритм и алгоритмы на основе графов, но ни слова не нашел как этим алгоритмы реализовать.
Иными словами, я все равно что пытаюсь понять как подсчитать численными методами определитель матрицы, не зная о том, что такое программирование. Т.е. алгоритм знаю, логику понимаю, а вот как реализовать - не знаю.
Если у кого-нибудь есть информация на эту тему, поделитесь пожалуйста.
Из того, что я узнал:
- в библиотке MPICH2 есть мнеджеры процессов mpd smpd. Насколько я понимаю, они помогают запускать MPI программу и позволяют организовать вычисление на нескольких узлах. Тогда возникает вопрос, а для чего же нужны такие системы как Platform LSF HPC - программное обеспечение, позволяющее управлять распределением нагрузки.
- технологии RPC, ORB и CORBA - так же являются механизмами распределенных вычислений, но насколько я понял, они больше подходят для систем управления удаленными базами данных и для создания клиент-серверных программ, которые просто вызывают методы удаленных процедур и функций. Т.е. ни о каком распределении тут речи не идет, динами процессов не наблюдается.
О выше упомянутой Platform LSF HPC - создание подобной системы меня и интерсеует.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 дек 09 16:15 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
mpd/smpd, rpc, corba и т.п. это не менеджеры процессов. Это средства для запуска процесса/сервиса. Не более того. LSF идругие менеджеры ресурсов занимаются распределением этих процессов по конкретным узлам. Например, есть кластер из 24 узлов. Надо запустить 3 задачи - на 20 узлов, на 2 узла и на 4 узла. Запустив 3 команды mpirun Вы получите на первом узле 3 задачи, а на последнем - ни одной. Менеджеры ресурсов, такие как LSF, запустят первую на 20 узлах, потом вторую на 2-х и после того, как освободятся 4 - третью.
Реализацию упомянутых алгоритмов можно искать в планировщиках к менеджерам ресурсов (MAUI, например), но их немного, насколько мне известно. Можно также посмотреть на реализацию мета-диспетчеров для Globus/GLite.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 дек 09 12:03 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
Цитата:
mpd/smpd, rpc, corba и т.п. это не менеджеры процессов

Согласно вот этой статье http://iproc.ru/programming/mpich-windows/ mpd/smpd являются именно менеджерами процессов и позволяют работать с множеством узлов в сети. Однако, их работа заключается в простом распределении потоков поровну между всеми процессороми, будь то 4 процессора на локольной ЭВМ или это несколько процессоров, распределенных по узлам сети. Иными словами, они не учитывают степень нагрузки и количество занятых ресурсов.
За совет с планировщиком MAUI огромное спасибо, используемый в нем алгоритм backfill мне поверхностно знаком и есть куча литературы, плосмотреть исходник планировщика будет полезно, тьем более что он opensource. Не знаю правда, найду ли я его где. Однако хотелось бы найти литературу по устройству планировщиков, ибо читать один исходник на мой взгляд крайне сложно. Если есть какая-нибудь информация, буду рад услышать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 дек 09 17:30 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
mpd/smpd занимаются ТОЛЬКО поддержкой запуска процессов. Они даже не "делят поровну" - как будет указано в machinefile, так и запустится. Укажете 10 процессов на одном узле - запустят 10 на одном узле и даже предупреждения не напишут. Минимальная логика есть в mpirun в mpich1/2 - "если в machinefile узлов не хватило, начать читать его заново". Но не боле того. Два mpirun понятия не имеют друг о друге, так что ни о каком "менеджменте" речи просто не идёт...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 дек 09 20:36 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
Я с вами спорить не буду, тем более, что почти согласен. =) Ну и бог с ним с smpd и mpd, меня теперь сами планировщики интересуют. Я скачал исходники от Condor, а вот от MAUI не нашел. Condor, насколько я понимаю, является системой обширной, в то время как MAUI - только планировщик и может быть использовани с любым ПО по управлению распределенным ивычислениями. Как бы то не было, от MAUI у меня исходников нет, а от Condor они безкрайние, и без справочной литературы я лет 5 потрачу на их изучение. Может кто подскажет как бы мне от простого к сложному весь этот объем охватить и разобраться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 8:48 
Не в сети

Зарегистрирован: 12 янв 06 11:26
Сообщения: 98
Откуда: Хабаровск, ВЦ ДВО РАН
У меня есть опыт с реализацией Backfill на С++. Не ясно, что вас затрудняет, если алгоритмы много раз в сети описаны, на том же оф.сайте torque? Или вы просто не умеете программировать? Опишите свои проблемы подробнее и главное, зачем вам нужно реализовывать алгоритм планирования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 13:03 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
Нет, программировать я умею и не на одном языке, делаю это уже не первый год. Дело в том, что я НЕ знаю как работать с процессами и ресурсами. В Windows, напрмер, есть API функции для получения активных процессов, потоков для каждого процесса, степени загруженности процессора и т.д. Так, например, в том же Backfill нужно составить расписание, которое будет состоять из уже запущенных заданий и из заданий, запланированных в локальных очередях. Вопрос в том, как эту информацию получить? Далее, когда план составлен в определенный момент времени определенное задание нужно послать на определенный процессор. Как это делается? Меня интересует, как это все реализовать? Нужно ли использовать Win API или аналогичные системные функции скажем для Линукс (программированием под Линукс не занимался). Ведь если есть задача сделать планировщик кроссплатформенным, то те же API отпадают. Тогда как? Вот именно инструментарий программиста в данной задачи мне и нужен. Чем в данной ситуации можно оперировать?
Если у вас был опыт реализации алгоритма, расскажите о том, какими средствами вы его реализовывали. Почему я вообще этим занимаюсь? У меня задача разработать свою систему управления распределенными вычислениями. Взял эту тему на диплом и перед началом последнего семестра пытаюсь разобраться, чтобы уже начать ее делать. В работу так же входит написание тестового примера параллельных расчетов, с которым у меня особых проблем не возникло.
P.S. насколько я знаю, в Windows вообще нет механизмов межузлового взаимодействия, и единственное, что они до сих пор придумали - это Windows HPC Server 2008.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 13:31 
Не в сети

Зарегистрирован: 12 янв 06 11:26
Сообщения: 98
Откуда: Хабаровск, ВЦ ДВО РАН
Ваш вопрос по системному программированию, а не по алгоритмам планирования.
Хотите взять "на себя" функции операционной системы по планированию процессов и потоков? Кроссплатформенного решения не получится. В случае линукса (и подобных) - это патч к ядру, добавляющий еще один механизм планирования, а запуск - через обычный fork-exec (так все процессы в линуксе запускаются, кроме процесса init).

Но можно мыслить чуть "выше" и не указывать системе на каких ядрах какие потоки\процессы гонять. Самое простое - при поступлении заданий составлять расписание и каждые N секунд\минут или по установленному счетчику запускать задания. Ваша задача тогда будет в выборе подходящего вычислительного узла (на этапе составления расписания). Перекидываете туда задачу (хотя бы по sftp) и делаете ее запуск (например по ssh). Чуть труднее отслеживать ее состояние, но тоже не велика проблема. Информацию о загрузке и наличии ресурсов лучше в этом случае (и кросплатформеннее) получать косвенно, например, делая запрос к системе мониторинга типа ganglia.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 13:42 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
Т.е. я так понял, что чем распределять процессы с одного узла, легче затавить нужные узлы в нужный момент самим забирать эти процессы? Очень много незнакомых слов Вы мне сказали, но спасибо, буду разбираться. Если есть еще мнения, то буду рад узнать. =)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 13:51 
Не в сети

Зарегистрирован: 12 янв 06 11:26
Сообщения: 98
Откуда: Хабаровск, ВЦ ДВО РАН
unknown_coder писал(а):
Т.е. я так понял, что чем распределять процессы с одного узла, легче затавить нужные узлы в нужный момент самим забирать эти процессы?

Нет, я имел ввиду с одного узла, где будет составляться расписание и накапливаться задания проще делать запуск процессов посредством scp (или sftp) + ssh на других узлы, не указывая, как именно на тех машинах делать запуск (а запустятся они почти сразу!), операционная система разберется лучше. Вы просто запоминаете у себя, что те пустые узлы уже не пустые и отсюда уже составляете следующие расписания, дожидаясь окончания работы запущенных заданий.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 09 14:12 
Не в сети

Зарегистрирован: 24 дек 09 13:45
Сообщения: 21
ОК, теперь понятно. =) Огромное спасибо за помощь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB