Архитектура системы обработки больших объемов изображений с автоматическим распараллеливанием Созыкин А.В. (avs@imm.uran.ru) Гольдштейн М.Л. Институт математики и механики УрО РАН г.Екатеринбург Международная суперкомпьютерная конференция Научный сервис в сети Интернет: поиск новых решений 17 - 22 сентября 2012 года, Абрау-Дюрсо Актуальность При проведении научных исследований часто создаются изображения: Астрономия, медицина, физические эксперименты и др. Объем изображений очень большой (терабайты) Обрабатывать изображения в последовательном режиме нерационально 18.09.12 2 Проблемы Параллельные вычисления трудны для освоения предметниками Работа с данными большого объема: Перемещать данные для обработки сложно Системы хранения отличаются высокой стоимостью 18.09.12 3 Используемые подходы Автоматизация распараллеливания обработки больших объемов изображений Перемещение вычислений к данным 18.09.12 4 Выбор технологии MPI OpenMP MapReduce Автоматическое распараллеливание Нет Есть (Директивы компилятора) Есть Распределенная файловая система Нет Нет Есть Архитектура оборудования SMP, кластер, MPP SMP SMP, кластер Нет Нет Есть Любой Любой MapReduce Механизмы восстановления в случае отказов оборудования Алгоритм 18.09.12 5 Основы MapReduce Функции: список список Reduce: список значение Map: Обработка данных ведется независимо Одна фаза коммуникации Популярная реализация: Hadoop 18.09.12 6 Примеры использования Определение положения снимка местности Обработка пространственных данных A. Cary. et al. Conference on Scientific and Statistical Database Management. 2009. Обработка астрономических наблюдений J. Hays, A. A. Efros. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2008. K. Wiley, et al. Astronomical Data Analysis Software and Systems, 2010. Обработка данных дистанционного зондирования 18.09.12 Mohamed H. Almeer. Journal of Emerging Trends in Computing and Information Sciences 2012. 7 Проблемы Hadoop не имеет встроенной поддержки изображений. Необходимо писать код для: Загрузки изображений Преобразования во внутренний формат Hadoop Запись обработанных изображений Требуется разбираться во внутреннем устройстве Hadoop и MapReduce 18.09.12 8 Предлагаемое решение Изоляция от прикладного программиста деталей внутреннего устройства Hadoop: Прикладной программист пишет последовательную программу, обрабатывающую одной изображение Применение программы к большому числу изображений в параллельном режиме выполняется автоматически Ограничение: изображения (группы изображений) обрабатываются независимо 18.09.12 9 Логическая архитектура 18.09.12 10 Архитектура для пользователя Image Java API – интерфейс для запуска программ на Java Image C API – интерфейс для запуска программ на С Image Processing Library – набор готовых обработчиков изображений 18.09.12 11 Как использовать? Реализовать ПОСЛЕДОВАТЕЛЬНУЮ функцию обработки ОДНОГО изображения Пример из Java API: public abstract class JavaImageProcessor { public abstract HIIntImage processImage(HIIntImage img); } HIIntImage – внутреннее представление изображения, массив пикселей 18.09.12 12 Как запускать? Пример из командной строки: $hadoop jar hadoopimage.jar MyImageProcessor input output Параметры: hadoopimage.jar – запустить систему обработки изображений MyImageProcessor – класс, в котором реализован обработчик изображения input – каталог входных изображений output – каталог для обработанных изображений jar 18.09.12 13 Процесс обработки Задача JobTracker Image Record Reader Map Обработчик пользователя Map Обработчик пользователя Image Record Writer Image Record Writer HDFS HDFS Узел 1 18.09.12 Image Record Reader Узел 2 14 Текущая реализация Средства работы с изображениями в Hadoop Java Image API Представление изображения: Формат RGB Массив int или float Java BufferedImage 18.09.12 15 Тестирование Кластер из 4-х серверов: Fujitsu-Siemens RX330 2 процессора AMD Opteron 285, 2 ядра, 2.8 ГГц 8 ГБ памяти Жесткий диск 250 ГБ Hadoop 1.03 Scientific Linux 6.2 18.09.12 16 Particle Image Velocimetry Источник данных: проект PIV Challenge http://www.pivchallenge.org/ 18.09.12 17 Результаты тестирования Объем изображений 500 ГБ, формат BMP Количество экспериментов для каждого числа серверов – 10 шт. 18.09.12 18 Направления дальнейшего развития Реализация C API и готовых обработчиков изображений Сравнение производительности с MPI Текущую реализацию на Java сравнивать с MPI не имеет смысла Обеспечение поддержки GPU для обработки изображений 18.09.12 19 Заключение Представлена архитектура системы обработки изображений: Автоматическое распараллеливание Перемещение вычислений к данным Текущая реализация и тестирование подтвердили работоспособность и масштабируемость Работа поддержана грантом УрО РАН № 12П-1-1029 18.09.12 20 Спасибо за внимание! 18.09.12 21