Библиотека для распределения задач в MPI (или другой)? - PullRequest
2 голосов
/ 29 июня 2010

Я хочу реализовать «ветвление и связывание» в кластере (как, скажем, в Amazon), так как я хочу, чтобы он был горизонтально масштабируемым, а не ограничивался одним процессором. Есть статья «Команды пула задач: гибридная среда программирования для нерегулярных алгоритмов на кластерах SMP», написанная Джудит Хипполд и Гудулой Рангером. Это в основном восходящая платформа для кражи задач, такая как Intel TBB, за исключением специальных сетей вместо общей памяти. Если бы эта библиотека была доступна, я бы использовал ее (заменив локальную резьбовую часть на TBB). К сожалению, они, кажется, не сделали его доступным для скачивания в любом месте, которое я мог бы найти, поэтому мне интересно, есть ли другие реализации или подобные библиотеки?

Не похоже, что у библиотеки параллельных задач Microsoft есть аналог, который можно украсть.

(Я пытался сделать тэг 'taskpool' после 'threadpool', наиболее часто используемого варианта (до 'thread-pool'), но у меня не было достаточно очков. Кто-нибудь достаточно тяжелый думает, что стоит добавить?)

редактирование:

Я еще не пробовал, но PEBBL (здесь: software.sandia.gov/trac/acro/wiki/Packages) претендует на масштабность. Статья, которую автор упоминает из книги Уайли «Параллельные ветвящиеся и связанные алгоритмы», Crainic, Le Cun and Roucairol, 2006, из «Parallel Combinatorial Optimization», 2006, отредактированной El-Ghazali Talbi, была там, где я ее нашел, и в списке есть и другие библиотеки; некоторые могут быть лучше, я оставляю за собой право обновить это :). Забавно, что Google не нашел этих библиотек, либо мой Google был слабым, либо сам Google иногда не был волшебным.

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Одна вещь, которую вы могли бы рассмотреть, это исследование общих очередей сообщений, таких как RabbitMQ.Это сервер AMQP (протокол обмена сообщениями, разработанный для того, чтобы распределенные приложения могли отправлять сообщения друг другу).

2 голосов
/ 09 июля 2010

Когда вы говорите «поверх кластера», это звучит так, как будто вы имеете в виду распределенную память, а распараллеливание ветвей и границ является общеизвестно трудной проблемой для распределенной памяти - по крайней мере таким образом, который гарантирует масштабируемость. Оригинальный документ по этой теме доступен здесь , и есть отрывок из книги Wiley по теме здесь .

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

1 голос
/ 29 июня 2010

вам, по сути, нужна какая-то распределенная синхронизация / очередь

Я предлагаю рассмотреть armci как низкоуровневый интерфейс распределенной памяти с синхронизацией и построить на этом основе.выделить процесс MPI в качестве мастера для распределения распределения работы.

http://www.cs.utk.edu/~dongarra/ccgsc2008/talks/Talk10-Lusk.pdf

...