Планирование распределенных вычислений
Мопед не мой, вернее, я сам на нем не катался, но краем уха слышал, что OpenMP вроде как умеет хоть на одной машине, хоть по сети распределять задачи, конфигурится только OpenMP для этого, а не твоя программа.
OpenMP не подойдет
Пока я только понял, что все это буду реализовывать поверх MPI.Ответы на все эти вопросы зависят целиком и полностью от задачи.
Подскажите в какую сторону копать по поводу следующих проблем:
1. Как раскидать задачи по машинам, чтобы минимизировать время выполнения,
с учетом затрат на пересылку данных?
2. Как грамотно выстроить архитектура? Я так понимаю должен быть один
контроллер который организует и синхронизирует работу и воркеры для каждой машины,
но не хочется изобретать велосипед.
например если речь идёт о подборе пароля то тут параллельные технологии не потребуются - распределить на компы можно такую задачу вручную
Ответы на все эти вопросы зависят целиком и полностью от задачи.Задача не тривиальная. Структура вычислений примерно как на картинке:
Пока я только понял, что все это буду реализовывать поверх MPI.А всякие mpich и аналоги этого не умеют сами? Если нет, то смотри в сторону гридов (Condor, Oracle Grid Engine). У кондора точно DAG менеджер есть, насчет сановского творения не уверен, но тоже наверняка.
А всякие mpich и аналоги этого не умеют самиА разве mpich это не просто одна из реализаций MPI?
Если нет, то смотри в сторону гридов (Condor, Oracle Grid Engine). У кондора точно DAG менеджер есть, насчет сановского творения не уверен, но тоже наверняка.Condor с DAGMan вроде похож на то, что надо. Буду разбираться.
может быть надо что-то типа Kepler, CODE?Не похоже. На первый взгляд это какая-то гуевая штука, да еще и на Java. Забыл написать, что пишу на C++.
http://kepler-project.org/
Ты же говоришь, что сложные механизмы. Как раз недавно слушали предзащиту диссера, тут у нас чувак написал подобную систему, там тоже гуй прикручивается.
Короче, эти workflow системы очень круты, они как раз для этого: распределенное вычисление по сложной схеме.
Есть еще от Microsoft что-то, Microsoft Workflow бла-бла-бла.
Workflow бла-бла-блаFoundation
Есть такой язычок поверх MPI, называется Charm++, кажется должен тебе очень даже подойти.
Всем спасибо, пошел разбираться. Потом отпишусь о результатах.
Оставить комментарий
istran
Всем привет.Понадобилось распределить задачу по нескольким машинам.
Раньше я с распределенными вычислениями дела не имел, только с многопоточными.
Задача хорошо разбивается на подзадачи со своими входными и выходными данными.
Выходные данные подзадач используются в качестве входных другими подзадачами,
поэтому подзадачи по зависимостям организуют ациклический направленный граф.
Время выполнения каждой из подзадач и объем выходных данных каждой из них можно
оценить по исходным данным.
Пока я только понял, что все это буду реализовывать поверх MPI.
Подскажите в какую сторону копать по поводу следующих проблем:
1. Как раскидать задачи по машинам, чтобы минимизировать время выполнения,
с учетом затрат на пересылку данных?
2. Как грамотно выстроить архитектуру? Я так понимаю должен быть один
контроллер который организует и синхронизирует работу и воркеры для каждой машины,
но не хочется изобретать велосипед.