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