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, но мне кажется, что это специфическая модель параллельной обработки, и она проста в реализации. Этот вид абстракции должен сэкономить ваше время программирования и может или не может обеспечить подходящее решение вашей проблемы. Все зависит от характера того, что вы пытаетесь сделать.

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

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

Другие вопросы по тегам