Научная статья на тему 'Технология высокопроизводительной обработки изображений'

Технология высокопроизводительной обработки изображений Текст научной статьи по специальности «Прочие технологии»

CC BY
201
52
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по прочим технологиям, автор научной работы — Русин Е. В.

A multi-component technology integrating multiprocessor computer into remote sensing data processing is discussed.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по прочим технологиям , автор научной работы — Русин Е. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

HI-PERFORMANCE IMAGE PROCESSING TECHNOLOGY

A multi-component technology integrating multiprocessor computer into remote sensing data processing is discussed.

Текст научной работы на тему «Технология высокопроизводительной обработки изображений»

УДК 004.75:004.932 Е.В. Русин

ИВМиМГ СО РАН, Новосибирск

ТЕХНОЛОГИЯ ВЫСОКОПРОИЗВОДИТЕЛЬНОЙ ОБРАБОТКИ ИЗОБРАЖЕНИЙ

E. V. Rusin

Institute of Computational Mathematics and Mathematical Geophysics SB RAS prospect Akademika Lavrentjeva, 6, Novosibirsk, 630090, Russia

HI-PERFORMANCE IMAGE PROCESSING TECHNOLOGY

A multi-component technology integrating multiprocessor computer into remote sensing data processing is discussed.

Введение

Все большее проникновение высокопроизводительных ЭВМ в процессы обработки и анализа данных дистанционного зондирования Земли (ДЗЗ) обостряет проблему «враждебности» суперЭВМ к рядовому пользователю. Как правило, многопроцессорная ЭВМ управляется операционной системой семейства UNIX и функционирует как вычислительный сервер, взаимодействуя с внешними клиентами через защищенное SSH-соединение. Консольные программы удаленного SSH-доступа (типа PuTTy или SSH Secure Shell) предоставляют пользователю лишь сервис командной строки, графические же X-терминалы обладают низким быстродействием. Это приводит к тому, что использование многопроцессорных ЭВМ оказывается доступным только для пользователей с опытом работы в UNIX и недоступным рядовому пользователю ОС семейства Windows, которыми оснащено подавляющее большинство ПК в нашей стране. И даже с учетом этого обработка данных на многопроцессорной ЭВМ выполняется в несколько приемов: загрузка данных с помощью SFTP-клиента (SFTP -защищенный протокол передачи файлов на основе SSH), запуск команды обработки на удаленной машине (с помощью SSH-терминала), закачка на локальную машину результатов (с помощью того же SFTP-клиента).

Разрабатываемая в Лаборатории обработки изображений ИВМиМГ СО РАН технология интеграции высокопроизводительных ЭВМ в процесс обработки и интерпретации данных ДЗЗ призвана обеспечивать:

- Работу оператора в привычном Windows-окружении;

- Визуализацию данных;

- Формирование задания на обработку;

- Загрузку задания и исходных данных на многопроцессорную ЭВМ;

- Обсчет задания на многопроцессорной ЭВМ;

- Возврат результатов расчетов на клиентскую ЭВМ.

Реализующая технологию программная система состоит из трех компонент:

- Клиентская компонента: Windows-приложение - рабочее место оператора.

- Серверная компонента: UNIX-приложение, функционирующее на удаленной многопроцессорной ЭВМ, обрабатывающее запросы клиента.

- Вычислительная компонента, реализующая как базовые алгоритмы обработки, так и оригинальные алгоритмы, созданные в ИВМиМГ СО РАН.

Клиентская компонента

Реализующее клиентскую компоненту Windows-приложение разрабатывается в среде Microsoft Visual C++ .NET. Оно состоит из следующих подсистем:

- Подсистема управления, централизующая работу комплекса; создана на базе каркаса типового многодокументного приложения MFC.

- Подсистема визуализации, обеспечивающая просмотр исходных изображений и результатов обработки. Для Windows-визуализации изображений различных форматов используется библиотека CxImage, свободно доступная в исходных кодах и не требующая дополнительного лицензирования.

- Подсистема взаимодействия с удаленной машиной, обеспечивающая закачку данных на удаленную машину и выполнение на ней команд. Так как взаимодействие с многопроцессорной ЭВМ осуществляется посредством защищенного SSH-соединения, необходимы программные средства, обеспечивающие выполнение простейших операций по протоколу SSH. Самостоятельная реализация протокола SSH сопряжена с высокими трудозатратами, в связи с чем возникла необходимость использования SSH API (набора подпрограмм, обеспечивающего SSH-взаимодействие), созданного третьими сторонами. Существенным моментом отбора SSH API стало требование возможности его свободного использования, что сузило число возможных вариантов до двух - набора подпрограмм, лежащего в основе известного SSH-клиента PuTTY, и библиотеки CryptLib. В результате выбор был сделан в пользу второго варианта, главным преимуществом которого стал уже готовый для использования API (получение такого интерфейса в случае PuTTy возможно только после серьезного разбора исходного кода данного приложения). Библиотека CryptLib не поддерживает напрямую SFTP, однако ограниченность требуемого набора операций с файловой системой удаленной машины позволяет реализовать их на базе CryptLib.

- Подсистема формирования запросов, предназначенная для преобразования пользовательских запросов на обработку в команды для подсистемы взаимодействия с удаленной машиной. Фактически, это единственная подсистема комплекса, требующая перенастройки при использовании различных многопроцессорных ЭВМ. Здесь определяются

специфичные для данной многопроцессорной ЭВМ команды работы с очередями задач, также команды, обеспечивающие выполнения операций обработки изображений.

На текущий момент реализованы и отлажены подсистемы взаимодействия с удаленной машиной и визуализации. Подсистема формирования запросов реализована в усеченном варианте и будет наращиваться в дальнейшем.

Серверная компонента

Протокол SSH обеспечивает возможность выполнения команд операционной системы и запуск программ на стороне сервера. Таким образом, реализация серверной компоненты системы сводится к созданию программы для многопроцессорной ЭВМ, удаленно запускаемой клиентской компонентой через установленное SSH-соединение и выполняющей непосредственно обработку. Параметром такой программы является имя файла-задания.

Вычислительная компонента

Основой вычислительной компоненты является библиотека параллельной обработки изображений SSCC-PIPL [1]. При ее создании использовались следующие методологические принципы:

1. Максимальное сокрытие использования параллелизма от пользователей библиотеки. В идеале, интерфейс библиотеки должен быть спроектирован так, чтобы использующая ее параллельная программа выглядела как обычная «последовательная» программа. С этой целью была выбрана идеология SPMD (Single Program Multiple Data). Программа, использующая библиотеку, компилируется в исполняемый модуль, копии которого запускаются на каждом вычислительном узле многопроцессорной ЭВМ. При этом весь код, отвечающий за выполнение операций параллельной среды (инициализация / деинициализация среды, самоидентификация узла среди всех выполняющих узлов, межпроцессорные пересылки и синхронизация) находится в реализации библиотеки. Вместе с тем, мы посчитали, что полное сокрытие параллелизма от пользователя приведет к потенциальной неэффективности программных систем, основанных на композиции алгоритмов (для одного алгоритма наиболее эффективен один способ распараллеливания, для другого - второй, а для их композиции -третий, возможно совпадающий с первым или вторым). При этом пользователь, как правило, в состоянии указать некоторые общие соображения об эффективном распараллеливании алгоритма (например, если распараллеливаемый алгоритм - композиция трех фильтраций с ядром 5 х 5 пикселей, то оптимальное распараллеливание достигается при разрезании изображения на полосы с перекрытием в шесть пикселей). Поэтому библиотека должна оставлять пользователю возможность указания способа распараллеливания «в общем».

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

реализации: операции типа «пиксель-пиксель» (например, сложение двух изображений), «окрестность-пиксель» (операции свертки), «все изображение-константа» (вычисление суммы пикселей), и т.д. При этом в программном коде, реализующем различные алгоритмы одной группы, присутствует существенная часть, повторяющаяся (с незначительными вариациями) от алгоритма к алгоритму. Далее, большая часть алгоритмов обработки изображений обладает естественным параллелизмом, а число способов распараллеливания вычислений оказывается крайне ограниченным. Для того чтобы избежать дублирования программного кода, реализующего параллельные алгоритмы, разрабатываемая библиотека должна иметь компактное ядро, обеспечивающее выполнение общих (для алгоритмов одной группы) операций. Это ядро состоит из небольшого числа обобщенных функций, реализующих общий для данной группы операций код. Конкретный алгоритм реализуется функцией, вызываемой обобщенной функцией и выполняющей, например, вычисление значения одного пикселя результата. Важным следствием такого решения является расширяемость библиотеки через добавление к ней пользовательских функций. Пользователю при этом не придется иметь дело с моделями параллелизма, а необходимо будет реализовать операцию в терминах обработки изображений.

3. Создаваемый программный код должен минимизировать накладные расходы, неизбежные при росте уровня абстракции модели вычислений (в частности, при переходе от полной реализации каждого алгоритма в терминах всего изображения с учетом его параллельного представления к обобщенным операциям, реализованным однократно в ядре библиотеки и параметризуемым пользовательским кодом - см. предыдущий пункт).

4. В качестве средств реализации необходимо использовать C++ и MPI. Это обеспечит возможность низкоуровневых оптимизаций кода, его переносимость, а также возможность обобщения операций с помощью механизмов наследования и шаблонов. Кроме того, среда выполнения MPI соответствует выбранной парадигме SPMD.

Интерфейс библиотеки SSCC-PIPL составляют следующие классы:

CRunTime - среда выполнения. Предоставляет вспомогательные операции (инициализация MPI, печать отладочных сообщений, измерение временных интервалов, и пр.).

CImage - класс, реализующий абстракцию изображения. Предоставляет операции чтения изображения из дискового файла, записи изображения в файл, а также выполнение преобразований изображения.

CNeighborhoodManipulator - манипулятор окрестностью пикселя изображения. Класс позволяет реализовывать алгоритмы обработки, абстрагируясь от конкретных параметров изображения (физических размеров, распределения по процессорам и пр.), в терминах окрестности обрабатываемого пикселя. Использование абстракции манипулятора

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

Пользователь имеет возможность выбрать один из следующих способов представления изображения на наборе исполняющих процессоров для наиболее эффективного распараллеливания вычислительного алгоритма:

- Полная копия изображения на каждом из процессоров.

- Разрезание изображения на непересекающиеся горизонтальные полосы числом, равным количеству исполняющих процессоров; отдельный процессор получает для обработки «свою» полосу.

- Разрезание изображения на горизонтальные полосы с перекрытием соседних полос в заданное количество пикселей; отдельный процессор получает для обработки «свою» полосу - таким образом, данные на границе полос дублируются на двух процессорах. При этом объект CImage следит за актуальностью данных в областях перекрытий, и поддержка этой актуальности прозрачна для пользователя.

Библиотека SSCC-PIPL обеспечивает чтение-сохранение изображений в различных графических форматах за счет использования библиотеки CxImage.

Преобразования изображения реализованы в библиотеке SSCC-PIPL как обобщенные операции. Для применения к изображению конкретного преобразования соответствующую обобщенную операцию необходимо параметризовать конкретным алгоритмом. При этом возник выбор между двумя возможными в C++ механизмами параметризации:

- Наследование: аргумент обобщенной операции - ссылка на

абстрактный базовый класс с чисто виртуальным методом Process(), выполняющим вычисление нового значения пикселя по текущим значениям пикселей изображения; конкретные алгоритмы наследуют базовому и определяют метод Process().

- Шаблоны (templates): обобщенная операция есть шаблонная

функция, параметризуемая классом конкретного алгоритма.

По соображениям производительности и универсальности SSCC-PIPL использует второй вариант - это позволило перенести накладные расходы, связанные с повышением уровня абстракции модели вычислений, на время компиляции программы пользователя, а не на время ее выполнения. Как результат сделанного выбора, библиотека должна распространяться в исходном коде, компиляция программы пользователя выполняется дольше, но ее быстродействие значительно повышается.

Примеры кода, использующего библиотеку, можно найти на Web-сайте проекта [1]. В результате тестовых расчетов получены ответы на два главных вопроса, необходимые для обоснования правильности выбранных методов реализации библиотеки:

1. Не слишком ли большие накладные расходы связаны с повышением уровня абстракции модели вычислений? Реализация алгоритма поиска кольцевых структур на аэрокосмоснимках [2] с помощью библиотеки

показала высокую эффективность ее программного кода (проигрыш в производительности по сравнению с реализацией, использующей непосредственный доступ к пикселям, составил не более 10 %). При этом значительно упростился процесс создания параллельной версии алгоритма.

2. Какова эффективность распараллеливания вычислений, обеспечиваемого библиотекой? Тестовые расчеты, выполненные на многопроцессорной ЭВМ МВС-1000/М Сибирского суперкомпьютерного центра, показали, что эффективность распараллеливания алгоритма медианной фильтрации с окнами осреднения от 3х3 до 21х21 пиксель на 8 процессорах составляет 95 %.

Заключение

Работа частично выполнена при финансовой поддержке РФФИ (проект № 07-07-00085а) и Фонда содействия отечественной науке.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. http://loi.sscc.ru/lab/RFFI07/ru/SSCC-PIPL/main.htm

2. Alekseev A.S, Pyatkin V.P., Salov G.I. Crater Detection in Aero-space Imagery Using Simple Nonparametric Statistical Tests // Lecture Notes in Computer Science. - Springer-Verlag, 1993. - Vol. 179. - P. 793-799.

© Е.В. Русин, 2008

i Надоели баннеры? Вы всегда можете отключить рекламу.