MapReduce против других решений параллельной обработки
Вопрос
Итак, вопросы: 1. Является ли накладные расходы MapReduce слишком высоки для следующей проблемы? Есть ли у кого -нибудь представление о том, как долго каждая карта/сокращение цикла (например, в диско) требуется для очень легкой работы? 2. Есть ли лучшая альтернатива MapReduce для этой проблемы?
С точки зрения карты моя программа состоит из 60 этапов карт, а 60 сокращают фазы, которые все вместе должны быть завершены через 1 секунду. Одной из проблем, которые мне нужно решить таким образом, является минимальный поиск с примерно 64000 переменными. Матрица гессиан для поиска представляет собой матрицу блока, 1000 блоков размера 64x64 вдоль диагонали и один ряд блоков в крайнем правом и дне. Последний раздел: Алгоритм инверсии блоков показывает, как это сделано. Каждый из Schur дополняет S_A и S_D может быть рассчитана на одном шаге MapReduce. Вычисление обратного занимает еще один шаг.
Из моих исследований MPI4PY кажется хорошей ставкой. Каждый процесс может сделать шаг вычислителя и отчитываться перед клиентом после каждого шага, и клиент может сообщить о новых переменных состояния для продолжения цикла. Таким образом, состояние процесса не теряется, вычисляет, можно продолжить с любыми обновлениями.http://mpi4py.scipy.org/docs/usrman/index.html
В этом вики есть некоторые предложения, но у кого -то есть направление на наиболее развитое решение:http://wiki.python.org/moin/parallelprocessing
Спасибо !
Решение
MPI - это протокол связи, который позволяет реализовать параллельную обработку путем передачи сообщений между узлами кластера. Модель параллельной обработки, которая реализована с помощью MPI, зависит от программиста.
У меня не было никакого опыта с MapReduce, но мне кажется, что это конкретная модель параллельной обработки и предназначена для того, чтобы быть простым для реализации. Этот вид абстракции должен сэкономить вам время программирования и может или не может предоставить подходящее решение вашей проблемы. Все зависит от природы того, что вы пытаетесь сделать.
Хитрость с параллельной обработкой заключается в том, что наиболее подходящее решение часто является конкретным проблемой, и, не зная больше подробностей о вашей проблеме, трудно дать рекомендации.
Если вы можете рассказать нам больше о среде, в которой вы выполняете свою работу, и где ваша программа вписывается в Таксономия Флинна, Я мог бы дать несколько более полезных предложений.