2012-05-14 2 views
2

Как вычислить гистограмму изображения с помощью параллельной вычисления? Гистограмма изображения в серийном режиме проста, но я не имею никакого представления о ее вычислении в Parallel.Вычисление гистограммы изображения в Параллельном

Любая идея, алгоритм, исходный код или полезная ссылка будут оценены.

Я использую MPI.

+1

что вы пробовали? вы проводили какое-либо параллельное программирование в прошлом? знаете ли вы гистограммы? это не учебный сайт, а сайт для конкретных вопросов, на которые можно дать точные ответы. см. FAQ. –

+1

@phresnel Вы не хотели бы, чтобы он отдавал все, что пытался. Это может испортить возможные ответы; люди могут предлагать улучшения в своих существующих методах, а не предоставлять лучший ответ. –

+0

@IanBoyd: Но что мы будем рекомендовать? Алгоритм? Книга о параллельном программировании? Параллельная архитектура? Блокировка шаблонов или другие методы синхронизации? Большие целые числа? Подходящие языки программирования? Исходный код полного приложения бесплатно? –

ответ

5

Вот идея:

Сначала вы рассеивают построчно изображения (если вы программируете на C) или по столбцам (если программа в Fortran) с использованием MPI_Scatter() или MPI_Scatterv() (с Scatterv вы можете распространять изображение на ряд процессов, которые не являются целым делителем числа строк/столбцов).

Затем каждый процесс вычисляет гистограмму его части изображения. Пусть гистограмма хранится в целочисленном массиве local_histogram из 256 элементов (я предполагаю, что изображения имеют оттенки серого).

На последнем этапе глобальное снижение суммирование выполняется с MPI_Reduce():

MPI_Reduce(local_histogram, histogram, 256, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); 

После полного глобального гистограмма будет в histogram массиве в процессе с рангом 0.

+0

спасибо Хришто :) –

1

Я могу только догадываться, что именно вы ищете. Позвольте мне дать вам краткую схему алгоритма для вас:

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

Этот подход аналогичен map/reduce.

Смежные вопросы