Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Цель работы - нахождение оптимального по скорости работы способа фильтрации данных по заданному алгоритму.
Достижение этой цели связано с решением следующих задач: 1. Рассмотреть возможные варианты ускорения фильтрации данных. Изучение технологии Cuda. Реализовать рассмотренные предложения с замерами скорости работы. 4. Провести сравнительный анализ реализаций. Задача фильтрации Существуют различные подходы к фильтрации данных. Полученные наработки можно рассматривать для любого из них. Для начала мы определим входные данные нашей задачи, затем алгоритм фильтрации, на основе которого будем рассматривать возможность его ускорения. Входные данные В ходе дефектоскопии получается матрица значений от 0 до 255, значение соответствует амплитуде сигнала от отражающей поверхности, в местах трещин, либо на краях металла значение будет выше, а в однородном металле меньше, причем циклы зондирования происходят через каждые 5 мм пути. Пример матрицы представлен на (рис. 1).
Рис. 1 Матрица входных данных Соответственно, массив значений получается очень большим, так как речь идет о сотнях километров путей. Поэтому актуальна задача быстрой обработки больших объемов данных. Обработка в данном случае необходима, так как большая часть дефектограммы заполнена сигналами с малой амплитудой, это могут быть фоновые шумы, незначительные электрические помехи, акустические шумы, загрязненность верхнего слоя железнодорожного полотна или некорректная настройка дефектоскопа. В зависимости от настройки оборудования дефект может быть зарегистрирован на любом из положительных уровней дефектограммы. Задача фильтрации состоит в выявлении сильных, то есть выделяющихся на общем фоне, наклонных связных пачек сигналов. При фильтрации кроме фоновых шумов и шумов типа «снег» должны быть учтены и удаление приконтактные шумовые дорожки, сигналы от выкружки рельса и электрические шумы (чаще всего возникающие при включении рации и имеющие вид частых длинных диагональных полос). На (рис. 2) показана дефектограмма, это так называемые “сырые” данные, полученные с прибора, на них можно четко заметить 2 горизонтальные линии.
Рис. 2 Дефектограмма с изображением болтового соединения
Верхняя линия – это отражение сигнала от головки рельса. Нижняя линия – это сигнал от подошвы рельса. Также можно рассмотреть различные шумы, а вот связная пачка наклонных сигналов – это пример болтового соединения. Оси координат имеют стандартное расположение, начальная точка находится в левом верхнем углу, ось X направлена вправо, ось Y вниз. На дефектограмме по оси Х отмечаются дискреты, каждое значение соответствует 5мм железнодорожного пути. По оси У отмечается время ответа после генерации сигнала в микросекундах. Чем темнее цвет, тем меньше амплитуда сигнала от отражающей поверхности. Таким образом, темный цвет соответствует однородному металлу, отражение от которого дает слабый сигнал (нулевой). Отражение от болтовых стыков, головки и подошвы рельса дает явно выделяющийся светлый цвет. Обычно входные данные разбиваются на файлы, в которых матрица имеет размер 180 строк и 10000 столбцов. Соответственно в каждом таком файле содержится информация о пятидесяти метрах железнодорожного полотна. Причем номер строки означает время отклика в микросекундах, что примерно соответствует расстоянию в миллиметрах. Быстрая обработка полученных данных поможет специалисту в нахождении дефектов, особенно когда нужно проверить многие километры железнодорожного полотна.
Алгоритм фильтрации Алгоритм фильтрации заключается в поэтапном проходе по матрице значений и выделении самых сильных сигналов. Формально можно записать следующим образом: 1) Вдоль каждой строки происходит проход малым “скользящим окном”, длина которого превышает в два-три раза типичную ширину наклонной пачки сигналов. При этом каждый раз в “скользящем окне” остаются наиболее сильные сигналы, остальные обнуляются. 2) Вдоль каждой строки происходит проход большим “скользящим окном”, длина которого превышает в 10 раз утроенную типичную ширину наклонной пачки сигналов. При этом каждый раз в “скользящем окне” остаются наиболее сильные сигналы, остальные обнуляются. 3) В каждом столбце матрицы сигналов остаются наиболее сильные сигналы таким образом, чтобы их суммарное количество не превышало утроенную максимальную поперечную высоту типичной наклонной пачки сигналов. Сигналы не удовлетворяющие этому условию обнуляются. 4) Фильтрация диагональной маской. По матрице сигналов осуществляется проход “скользящим окном” в виде специальной диагональной маски, которая оставляет только те сигналы, которые образуют связные наклонные линии. Остальные сигналы обнуляются (см. [7]).
Варианты реализации Прежде всего, можно заметить, что некоторые этапы алгоритма включается в себя множество одинаковых задач, которые можно выполнить независимо. Получается, что при большом объеме данных очень выгодно выполнять все задачи этапа параллельно, чтобы достигнуть наибольшей скорости. Рассмотрим варианты выполнения кода алгоритма, мы можем делать это на центральном процессоре компьютера (CPU), либо на графическом процессоре (GPU). Центральный процессор в среднем обладает от 2-8 ядрами, соответственно столько же параллельных задач можно запустить на нем. Тогда как графический процессор позволяет запустить миллионы параллельных задач одновременно. Таким образом, для ускорения выполнения задачи фильтрации подходит работа с выполнением программного кода на графическом процессоре. Рассмотрим это на примере технологии CUDA. Это достаточно современная технология для обработки больших объемов данных. Она активно применяется в целях машинного обучения, которое используется во всех поисковых системах для лучшего ранжирования данных. Технология представленная компанией Nvidia программно-аппаратная архитектура для расчётов на видеочипах CUDA неплохо подходит для решения многих задач, требующих большого количества параллельных расчётов. В плюсах у CUDA то, что она работает на всех современных решениях Nvidia, удобна в применении (по сравнению с другими моделями программирования GPGPU, но не CPU, тут пока есть место для улучшений) и уже довольно долгое время находится в разработке, что минимизирует количество недоработок и ошибок. CUDA использует и сама Nvidia, и одиночные исследователи в своих любительских проектах, и учебные заведения, и компании, производящие программно-аппаратные средства для множества сфер применения. Ведь CUDA — это технология, доступная любому разработчику ПО, неважно в какой сфере и компании он работает. Если применяемые в работе алгоритмы хорошо распараллеливаются в принципе, и GPU их ничем не ограничивает (точность вычислений, объём разделяемой памяти и т.п.), то нужно привыкнуть к иной парадигме программирования, присущей параллельным вычислениям, и тогда затраты времени на программирование на CUDA вернутся в виде хорошего прироста производительности.
Технология CUDA Введение CUDA, Compute Unified Device Architecture — программно-аппаратная архитектура, позволяющая производить вычисления с использованием графических процессоров NVIDIA, поддерживающих технологию GPGPU (произвольных вычислений на видеокартах). Впервые появились на рынке с выходом чипа NVIDIA восьмого поколения — G80 и присутствует во всех последующих сериях графических чипов, которые используются в семействах ускорителей GeForce, Quadro и NVidia Tesla. CUDA SDK позволяет программистам реализовывать на специальном упрощённом диалекте языка программирования Си алгоритмы, выполнимые на графических процессорах NVIDIA, и включать специальные функции в текст программы на Cи. CUDA даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического ускорителя и управлять его памятью, организовывать на нём сложные параллельные вычисления. Стоит отметить, что технология активно развивается в последнее время и находит применение в различных областях, где требуется работа с большими данными. На сегодняшний день продажи CUDA процессоров достигли миллионов, а разработчики программного обеспечения, ученые и исследователи широко используют CUDA в различных областях, включая обработку видео и изображений, вычислительную биологию и химию, моделирование динамики жидкостей, восстановление изображений, полученных путем компьютерной томографии, сейсмический анализ, трассировку лучей и многое другое.
|
Последнее изменение этой страницы: 2019-03-20; Просмотров: 338; Нарушение авторского права страницы