Ресурсы алгоритма генетического Монте-Карло MPI? - PullRequest
1 голос
/ 22 апреля 2009

Я работал с некоторыми друзьями, чтобы преобразовать генетический алгоритм Matlab в C ++, и в настоящее время он работает в последовательном порядке. Matlab больше не является частью нашего текущего кода.

Мы планируем использовать его в кластере, но ресурсы немного невелики. У нас есть кластер, доступный в университете, и он оснащен Rocks и OpenMPI, но я не совсем уверен, с чего начать работать с ним.

В настоящее время мы настроили 2D и 3D массивы с данными в них, и когда система выполняет кроссовер или обменивается между моделями, она просто пытается поменять части массива 2D и 3D. Каковы хорошие способы разделения этих структур по нескольким узлам?

Ответы [ 2 ]

1 голос
/ 22 апреля 2009

Если вы выполняете матричные вычисления, то существует ли хороший способ разбиения вычислений, в значительной степени зависит от самого вычисления.

Я очень рекомендую книгу Голуба и Ван Лоана "Матричные вычисления, 3-е изд.". В нем есть целая глава, посвященная параллельным вычислениям (гл. 6).

OpenMPI - прекрасное промежуточное программное обеспечение для решения этой проблемы. Поскольку вы делаете это в C ++, вы также можете взглянуть на zeromq. У них разные семантики, и один может быть предпочтительнее вашего проблемного пространства или набора навыков, чем другой.

Кроме того, вы должны знать, что параллельные матричные вычисления (обычно обработка сигналов, но есть множество других приложений) - очень и очень активная область исследований.

0 голосов
/ 22 апреля 2009

Фитнес Расчет:

Обычно вам просто нужно знать об одном человеке, чтобы рассчитать его пригодность, чтобы вы могли просто работать с населением, распределяя людей по каждому ядру. Когда физическое состояние человека будет рассчитано, передайте это ядро ​​новому человеку.

Кроссовер:

Подход "разделяй и властвуй" может хорошо подходить для этой проблемы. Разбейте ваши массивы на блоки, которые обрабатываются каждым ядром ЦП, затем, возможно, добавьте глобальный шаг кроссовера (объединение подмножеств пар), чтобы обеспечить вам возможность соответствующим образом перемещаться в многомерном пространстве.

...