mapreduce против других решений для параллельной обработки - PullRequest
0 голосов
/ 08 сентября 2011

Итак, вопросы: 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 Ответ

5 голосов
/ 08 сентября 2011

MPI - это протокол связи, который позволяет осуществлять параллельную обработку, передавая сообщения между узлами кластера. Модель параллельной обработки, реализованная с помощью MPI, зависит от программиста.

У меня не было никакого опыта работы с MapReduce, но мне кажется, что это специфическая модель параллельной обработки, и она проста в реализации. Этот вид абстракции должен сэкономить ваше время программирования и может или не может обеспечить подходящее решение вашей проблемы. Все зависит от характера того, что вы пытаетесь сделать.

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

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

...