18
CUDA ® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

Embed Size (px)

Citation preview

Page 1: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDAreg АЛЬМАНАХФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 2

СОДЕРЖАНИЕ

НОВОСТИ NVIDIA CUDA

Может ли компьютер написать музыкальный хит 3

Диагностика онкологических заболеваний с помощью технологии глубокого обучения и GPU 5

Интерактивная песочница 6

Обыграйте своих друзей в fantasy-футбол с помощью вычислений на GPU 7

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ 10

НАУЧНЫЕ РАБОТЫ С ИСПОЛЬЗОВАНИЕМ ВЫЧИСЛЕНИЙ НА CUDA 11

Ускорение работы алгоритма для решения задачи оптимизации при разработке системы управления мобильными роботами Захаров Д Н Шмалько Е Ю 11 Поиск изображений по цвету Волосач ДА Недведский АЮ 14

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA 16

ВАКАНСИИ CUDA 17

КОНТАКТЫ 18

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 3

Компьютеры могут управлять автомобилем составлять рецепты и даже сочинять рэп-композиции В Лондоне зрители скоро смогут выяснить могут ли они также создавать музыкальные хиты

Новое шоу под названием ldquoBeyond the Fencerdquo станет первым в мире мюзиклом сценарий и музыку для которого написала компьютерная система Мюзикл который появится на сцене в начале следующего месяца в Вест-Энде - это эксперимент который поможет определить как технологии влияют на искусство и творческий процесс

laquoОчевидно что одна из самых сложных задач для машины - это творить переживать и понимать искусство - рассказал Арчи Барон (Archie Baron) исполнительный продюсер нового шоу оказавший помощь в проведении эксперимента - Поэтому мы решили а почему бы не попробоватьraquo

НОВОСТИ NVIDIA CUDA МОЖЕТ ЛИ КОМПЬЮТЕР НАПИСАТЬ МУЗЫКАЛЬНЫЙ ХИТ БЛАГОДАРЯ МАШИННОМУ ОБУЧЕНИЮ СКОРО МЫ УЗНАЕМ ЭТО

Рецепт успеха

С самого начала мюзиклldquoBeyond the Fencerdquo получил преимущество которого не хватает шоу созданным человеком точный рецепт успеха Исследователи из Кембриджского университета использовали алгоритмы машинного обучения чтобы проанализировать что отличает популярный мюзикл от провала Команда изучила такие факторы как количество актеров декорации и тематику музыкальных представлений Их интересовало всегда ли успешное шоу повествует о любовной истории или смерти а может и о том и о другом

Затем двое исследователей Алекс Дэйвис (Alex Davis) и Джеймс Роберт Ллойд (James Robert Lloyd) создали на основе алгоритмов машинного обучения программу пишущую лирические тексты назвав ее laquoКлаудияraquo В процессе машинного обучения компьютеры обучают с помощью огромного числа больших наборов данных а затем они продолжают учиться сами исправляя свои ошибки и совершенствуясь со временем

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 4

laquoКлаудияraquo имеет более чем нетрадиционное музыкальное образование Она выучила английский язык по Wikipedia А познания в области лирической поэзии она черпает из проектов студии Wingspan Productions Исследователи натренировали laquoКлаудиюraquo на системе машинного обучения на базе четырех GPU развернутых на облаке Amazon Web Services GPU идеально подходят для реализации алгоритмов машинного обучения так как обладают необходимой производительностью для значительного ускорения процесса обучения

После обучения laquoКлаудияraquo написала стихи для создателей шоу композитора Бенджамина Тилля (Benjamin Till) и актера и писателя Натана Тейлора (Nathan Taylor)

Замысел структура и музыка

К другим созданным компьютерной системой элементам шоу относятся

bull Основная идея сюжета laquoА что если раненому солдату чтобы найти настоящую любовь нужно научиться понимать ребенкаraquo родилась в Голдсмитсе Лондонском университете в рамках исследовательского проекта What-If Machine

bull Сценарий был разработан с помощью компьютерной системы PropperWryter

bull Музыку же написала компьютерная программа Android Lloyd Webber в основе которой лежит анализ музыкальных треков методом машинного обучения

Действие ldquoBeyond the Fencerdquo разворачивается в 1982 году Мюзикл рассказывает историю матери и дочери живущих в лагере мира в Беркшире Англия и протестующих против введения на территорию страны американских крылатых ракет Когда мать сталкивается с тем что власти хотят забрать ее ребенка она обретает неожиданного союзника в лице американского пилота

laquoМы пока не знаем чем это все обернется как люди воспримут мюзикл и какие разговоры он повлечет за собой - сказал Барон основатель студии Wingspan Productions которая ведет хронику эксперимента для трансляции на английском телеканале Sky Arts - Но без сомнения это настоящая веха в истории театра и вычислительной креативностиraquo

Мюзикл будет идти на сцене с 22 февраля по 5 марта в laquoАртс-Театреraquo в Лондоне

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 5

ДИАГНОСТИКА ОНКОЛОГИЧЕСКИХ ЗАБОЛЕВАНИЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ ГЛУБОКОГО ОБУЧЕНИЯ Используя технологию глубокого обучения с ускорением на GPU исследователи из Китайского университета Гонконга открыли новые горизонты в области анализа изображений раковых клеток В ближайшем будущем это поможет врачам и их пациентам значительно сэкономить ценное время

Чтобы победить в конкурсе 2015 Gland Segmentation Challenge на ведущей в мире конференции по медицинской визуализации Medical Image Computing and Computer Assisted Intervention команда использовала в своей работе графическую карту TITAN X

Обычно патоморфологи диагностируют рак исследуя под микроскопом ткани и клетки на предмет патологических изменений Но этот процесс занимает много времени и не исключает ошибок

Обзор предложенного командой решения

Исследователи натренировали свою глубокую сверточную нейронную сеть на наборе изображений известных патологических изменений клеток Затем они использовали этот процесс обучения для деления желез на сегменты чтобы упростить распознавание отдельных клеток определение их размера формы и местонахождения по отношению к другим клеткам Вычислив эти размеры патоморфологи могут определить вероятность злокачественной опухоли

ldquoОбучение на GPU заняло в 100 раз меньше времени чем на CPU - рассказал Хао Чен (Hao Chen) аспирант третьего курса и член команды разработавшей это решение - По мере продолжения нашей работы подобная производительность будет играть еще большую рольraquo

Подробнее

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 2: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 2

СОДЕРЖАНИЕ

НОВОСТИ NVIDIA CUDA

Может ли компьютер написать музыкальный хит 3

Диагностика онкологических заболеваний с помощью технологии глубокого обучения и GPU 5

Интерактивная песочница 6

Обыграйте своих друзей в fantasy-футбол с помощью вычислений на GPU 7

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ 10

НАУЧНЫЕ РАБОТЫ С ИСПОЛЬЗОВАНИЕМ ВЫЧИСЛЕНИЙ НА CUDA 11

Ускорение работы алгоритма для решения задачи оптимизации при разработке системы управления мобильными роботами Захаров Д Н Шмалько Е Ю 11 Поиск изображений по цвету Волосач ДА Недведский АЮ 14

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA 16

ВАКАНСИИ CUDA 17

КОНТАКТЫ 18

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 3

Компьютеры могут управлять автомобилем составлять рецепты и даже сочинять рэп-композиции В Лондоне зрители скоро смогут выяснить могут ли они также создавать музыкальные хиты

Новое шоу под названием ldquoBeyond the Fencerdquo станет первым в мире мюзиклом сценарий и музыку для которого написала компьютерная система Мюзикл который появится на сцене в начале следующего месяца в Вест-Энде - это эксперимент который поможет определить как технологии влияют на искусство и творческий процесс

laquoОчевидно что одна из самых сложных задач для машины - это творить переживать и понимать искусство - рассказал Арчи Барон (Archie Baron) исполнительный продюсер нового шоу оказавший помощь в проведении эксперимента - Поэтому мы решили а почему бы не попробоватьraquo

НОВОСТИ NVIDIA CUDA МОЖЕТ ЛИ КОМПЬЮТЕР НАПИСАТЬ МУЗЫКАЛЬНЫЙ ХИТ БЛАГОДАРЯ МАШИННОМУ ОБУЧЕНИЮ СКОРО МЫ УЗНАЕМ ЭТО

Рецепт успеха

С самого начала мюзиклldquoBeyond the Fencerdquo получил преимущество которого не хватает шоу созданным человеком точный рецепт успеха Исследователи из Кембриджского университета использовали алгоритмы машинного обучения чтобы проанализировать что отличает популярный мюзикл от провала Команда изучила такие факторы как количество актеров декорации и тематику музыкальных представлений Их интересовало всегда ли успешное шоу повествует о любовной истории или смерти а может и о том и о другом

Затем двое исследователей Алекс Дэйвис (Alex Davis) и Джеймс Роберт Ллойд (James Robert Lloyd) создали на основе алгоритмов машинного обучения программу пишущую лирические тексты назвав ее laquoКлаудияraquo В процессе машинного обучения компьютеры обучают с помощью огромного числа больших наборов данных а затем они продолжают учиться сами исправляя свои ошибки и совершенствуясь со временем

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 4

laquoКлаудияraquo имеет более чем нетрадиционное музыкальное образование Она выучила английский язык по Wikipedia А познания в области лирической поэзии она черпает из проектов студии Wingspan Productions Исследователи натренировали laquoКлаудиюraquo на системе машинного обучения на базе четырех GPU развернутых на облаке Amazon Web Services GPU идеально подходят для реализации алгоритмов машинного обучения так как обладают необходимой производительностью для значительного ускорения процесса обучения

После обучения laquoКлаудияraquo написала стихи для создателей шоу композитора Бенджамина Тилля (Benjamin Till) и актера и писателя Натана Тейлора (Nathan Taylor)

Замысел структура и музыка

К другим созданным компьютерной системой элементам шоу относятся

bull Основная идея сюжета laquoА что если раненому солдату чтобы найти настоящую любовь нужно научиться понимать ребенкаraquo родилась в Голдсмитсе Лондонском университете в рамках исследовательского проекта What-If Machine

bull Сценарий был разработан с помощью компьютерной системы PropperWryter

bull Музыку же написала компьютерная программа Android Lloyd Webber в основе которой лежит анализ музыкальных треков методом машинного обучения

Действие ldquoBeyond the Fencerdquo разворачивается в 1982 году Мюзикл рассказывает историю матери и дочери живущих в лагере мира в Беркшире Англия и протестующих против введения на территорию страны американских крылатых ракет Когда мать сталкивается с тем что власти хотят забрать ее ребенка она обретает неожиданного союзника в лице американского пилота

laquoМы пока не знаем чем это все обернется как люди воспримут мюзикл и какие разговоры он повлечет за собой - сказал Барон основатель студии Wingspan Productions которая ведет хронику эксперимента для трансляции на английском телеканале Sky Arts - Но без сомнения это настоящая веха в истории театра и вычислительной креативностиraquo

Мюзикл будет идти на сцене с 22 февраля по 5 марта в laquoАртс-Театреraquo в Лондоне

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 5

ДИАГНОСТИКА ОНКОЛОГИЧЕСКИХ ЗАБОЛЕВАНИЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ ГЛУБОКОГО ОБУЧЕНИЯ Используя технологию глубокого обучения с ускорением на GPU исследователи из Китайского университета Гонконга открыли новые горизонты в области анализа изображений раковых клеток В ближайшем будущем это поможет врачам и их пациентам значительно сэкономить ценное время

Чтобы победить в конкурсе 2015 Gland Segmentation Challenge на ведущей в мире конференции по медицинской визуализации Medical Image Computing and Computer Assisted Intervention команда использовала в своей работе графическую карту TITAN X

Обычно патоморфологи диагностируют рак исследуя под микроскопом ткани и клетки на предмет патологических изменений Но этот процесс занимает много времени и не исключает ошибок

Обзор предложенного командой решения

Исследователи натренировали свою глубокую сверточную нейронную сеть на наборе изображений известных патологических изменений клеток Затем они использовали этот процесс обучения для деления желез на сегменты чтобы упростить распознавание отдельных клеток определение их размера формы и местонахождения по отношению к другим клеткам Вычислив эти размеры патоморфологи могут определить вероятность злокачественной опухоли

ldquoОбучение на GPU заняло в 100 раз меньше времени чем на CPU - рассказал Хао Чен (Hao Chen) аспирант третьего курса и член команды разработавшей это решение - По мере продолжения нашей работы подобная производительность будет играть еще большую рольraquo

Подробнее

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 3: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 3

Компьютеры могут управлять автомобилем составлять рецепты и даже сочинять рэп-композиции В Лондоне зрители скоро смогут выяснить могут ли они также создавать музыкальные хиты

Новое шоу под названием ldquoBeyond the Fencerdquo станет первым в мире мюзиклом сценарий и музыку для которого написала компьютерная система Мюзикл который появится на сцене в начале следующего месяца в Вест-Энде - это эксперимент который поможет определить как технологии влияют на искусство и творческий процесс

laquoОчевидно что одна из самых сложных задач для машины - это творить переживать и понимать искусство - рассказал Арчи Барон (Archie Baron) исполнительный продюсер нового шоу оказавший помощь в проведении эксперимента - Поэтому мы решили а почему бы не попробоватьraquo

НОВОСТИ NVIDIA CUDA МОЖЕТ ЛИ КОМПЬЮТЕР НАПИСАТЬ МУЗЫКАЛЬНЫЙ ХИТ БЛАГОДАРЯ МАШИННОМУ ОБУЧЕНИЮ СКОРО МЫ УЗНАЕМ ЭТО

Рецепт успеха

С самого начала мюзиклldquoBeyond the Fencerdquo получил преимущество которого не хватает шоу созданным человеком точный рецепт успеха Исследователи из Кембриджского университета использовали алгоритмы машинного обучения чтобы проанализировать что отличает популярный мюзикл от провала Команда изучила такие факторы как количество актеров декорации и тематику музыкальных представлений Их интересовало всегда ли успешное шоу повествует о любовной истории или смерти а может и о том и о другом

Затем двое исследователей Алекс Дэйвис (Alex Davis) и Джеймс Роберт Ллойд (James Robert Lloyd) создали на основе алгоритмов машинного обучения программу пишущую лирические тексты назвав ее laquoКлаудияraquo В процессе машинного обучения компьютеры обучают с помощью огромного числа больших наборов данных а затем они продолжают учиться сами исправляя свои ошибки и совершенствуясь со временем

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 4

laquoКлаудияraquo имеет более чем нетрадиционное музыкальное образование Она выучила английский язык по Wikipedia А познания в области лирической поэзии она черпает из проектов студии Wingspan Productions Исследователи натренировали laquoКлаудиюraquo на системе машинного обучения на базе четырех GPU развернутых на облаке Amazon Web Services GPU идеально подходят для реализации алгоритмов машинного обучения так как обладают необходимой производительностью для значительного ускорения процесса обучения

После обучения laquoКлаудияraquo написала стихи для создателей шоу композитора Бенджамина Тилля (Benjamin Till) и актера и писателя Натана Тейлора (Nathan Taylor)

Замысел структура и музыка

К другим созданным компьютерной системой элементам шоу относятся

bull Основная идея сюжета laquoА что если раненому солдату чтобы найти настоящую любовь нужно научиться понимать ребенкаraquo родилась в Голдсмитсе Лондонском университете в рамках исследовательского проекта What-If Machine

bull Сценарий был разработан с помощью компьютерной системы PropperWryter

bull Музыку же написала компьютерная программа Android Lloyd Webber в основе которой лежит анализ музыкальных треков методом машинного обучения

Действие ldquoBeyond the Fencerdquo разворачивается в 1982 году Мюзикл рассказывает историю матери и дочери живущих в лагере мира в Беркшире Англия и протестующих против введения на территорию страны американских крылатых ракет Когда мать сталкивается с тем что власти хотят забрать ее ребенка она обретает неожиданного союзника в лице американского пилота

laquoМы пока не знаем чем это все обернется как люди воспримут мюзикл и какие разговоры он повлечет за собой - сказал Барон основатель студии Wingspan Productions которая ведет хронику эксперимента для трансляции на английском телеканале Sky Arts - Но без сомнения это настоящая веха в истории театра и вычислительной креативностиraquo

Мюзикл будет идти на сцене с 22 февраля по 5 марта в laquoАртс-Театреraquo в Лондоне

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 5

ДИАГНОСТИКА ОНКОЛОГИЧЕСКИХ ЗАБОЛЕВАНИЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ ГЛУБОКОГО ОБУЧЕНИЯ Используя технологию глубокого обучения с ускорением на GPU исследователи из Китайского университета Гонконга открыли новые горизонты в области анализа изображений раковых клеток В ближайшем будущем это поможет врачам и их пациентам значительно сэкономить ценное время

Чтобы победить в конкурсе 2015 Gland Segmentation Challenge на ведущей в мире конференции по медицинской визуализации Medical Image Computing and Computer Assisted Intervention команда использовала в своей работе графическую карту TITAN X

Обычно патоморфологи диагностируют рак исследуя под микроскопом ткани и клетки на предмет патологических изменений Но этот процесс занимает много времени и не исключает ошибок

Обзор предложенного командой решения

Исследователи натренировали свою глубокую сверточную нейронную сеть на наборе изображений известных патологических изменений клеток Затем они использовали этот процесс обучения для деления желез на сегменты чтобы упростить распознавание отдельных клеток определение их размера формы и местонахождения по отношению к другим клеткам Вычислив эти размеры патоморфологи могут определить вероятность злокачественной опухоли

ldquoОбучение на GPU заняло в 100 раз меньше времени чем на CPU - рассказал Хао Чен (Hao Chen) аспирант третьего курса и член команды разработавшей это решение - По мере продолжения нашей работы подобная производительность будет играть еще большую рольraquo

Подробнее

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 4: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 4

laquoКлаудияraquo имеет более чем нетрадиционное музыкальное образование Она выучила английский язык по Wikipedia А познания в области лирической поэзии она черпает из проектов студии Wingspan Productions Исследователи натренировали laquoКлаудиюraquo на системе машинного обучения на базе четырех GPU развернутых на облаке Amazon Web Services GPU идеально подходят для реализации алгоритмов машинного обучения так как обладают необходимой производительностью для значительного ускорения процесса обучения

После обучения laquoКлаудияraquo написала стихи для создателей шоу композитора Бенджамина Тилля (Benjamin Till) и актера и писателя Натана Тейлора (Nathan Taylor)

Замысел структура и музыка

К другим созданным компьютерной системой элементам шоу относятся

bull Основная идея сюжета laquoА что если раненому солдату чтобы найти настоящую любовь нужно научиться понимать ребенкаraquo родилась в Голдсмитсе Лондонском университете в рамках исследовательского проекта What-If Machine

bull Сценарий был разработан с помощью компьютерной системы PropperWryter

bull Музыку же написала компьютерная программа Android Lloyd Webber в основе которой лежит анализ музыкальных треков методом машинного обучения

Действие ldquoBeyond the Fencerdquo разворачивается в 1982 году Мюзикл рассказывает историю матери и дочери живущих в лагере мира в Беркшире Англия и протестующих против введения на территорию страны американских крылатых ракет Когда мать сталкивается с тем что власти хотят забрать ее ребенка она обретает неожиданного союзника в лице американского пилота

laquoМы пока не знаем чем это все обернется как люди воспримут мюзикл и какие разговоры он повлечет за собой - сказал Барон основатель студии Wingspan Productions которая ведет хронику эксперимента для трансляции на английском телеканале Sky Arts - Но без сомнения это настоящая веха в истории театра и вычислительной креативностиraquo

Мюзикл будет идти на сцене с 22 февраля по 5 марта в laquoАртс-Театреraquo в Лондоне

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 5

ДИАГНОСТИКА ОНКОЛОГИЧЕСКИХ ЗАБОЛЕВАНИЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ ГЛУБОКОГО ОБУЧЕНИЯ Используя технологию глубокого обучения с ускорением на GPU исследователи из Китайского университета Гонконга открыли новые горизонты в области анализа изображений раковых клеток В ближайшем будущем это поможет врачам и их пациентам значительно сэкономить ценное время

Чтобы победить в конкурсе 2015 Gland Segmentation Challenge на ведущей в мире конференции по медицинской визуализации Medical Image Computing and Computer Assisted Intervention команда использовала в своей работе графическую карту TITAN X

Обычно патоморфологи диагностируют рак исследуя под микроскопом ткани и клетки на предмет патологических изменений Но этот процесс занимает много времени и не исключает ошибок

Обзор предложенного командой решения

Исследователи натренировали свою глубокую сверточную нейронную сеть на наборе изображений известных патологических изменений клеток Затем они использовали этот процесс обучения для деления желез на сегменты чтобы упростить распознавание отдельных клеток определение их размера формы и местонахождения по отношению к другим клеткам Вычислив эти размеры патоморфологи могут определить вероятность злокачественной опухоли

ldquoОбучение на GPU заняло в 100 раз меньше времени чем на CPU - рассказал Хао Чен (Hao Chen) аспирант третьего курса и член команды разработавшей это решение - По мере продолжения нашей работы подобная производительность будет играть еще большую рольraquo

Подробнее

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 5: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 5

ДИАГНОСТИКА ОНКОЛОГИЧЕСКИХ ЗАБОЛЕВАНИЙ С ПОМОЩЬЮ ТЕХНОЛОГИИ ГЛУБОКОГО ОБУЧЕНИЯ Используя технологию глубокого обучения с ускорением на GPU исследователи из Китайского университета Гонконга открыли новые горизонты в области анализа изображений раковых клеток В ближайшем будущем это поможет врачам и их пациентам значительно сэкономить ценное время

Чтобы победить в конкурсе 2015 Gland Segmentation Challenge на ведущей в мире конференции по медицинской визуализации Medical Image Computing and Computer Assisted Intervention команда использовала в своей работе графическую карту TITAN X

Обычно патоморфологи диагностируют рак исследуя под микроскопом ткани и клетки на предмет патологических изменений Но этот процесс занимает много времени и не исключает ошибок

Обзор предложенного командой решения

Исследователи натренировали свою глубокую сверточную нейронную сеть на наборе изображений известных патологических изменений клеток Затем они использовали этот процесс обучения для деления желез на сегменты чтобы упростить распознавание отдельных клеток определение их размера формы и местонахождения по отношению к другим клеткам Вычислив эти размеры патоморфологи могут определить вероятность злокачественной опухоли

ldquoОбучение на GPU заняло в 100 раз меньше времени чем на CPU - рассказал Хао Чен (Hao Chen) аспирант третьего курса и член команды разработавшей это решение - По мере продолжения нашей работы подобная производительность будет играть еще большую рольraquo

Подробнее

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 6: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 6

История создания ldquoИнтерактивной песочницыrdquo началась в 2012 году когда в Томске готовился к открытию первый в городе музей занимательной науки а студентов Томского политехнического университета попросили помочь в изготовлении экспонатов Именно тогда три студента ndash Вагиз Дусеев Егор Шеломенцев и Максим Рудь ndash решили сделать самый зрелищный и дорогой экспонат музея - ldquoИнтерактивную песочницуrdquo

ИНТЕРАКТИВНАЯ ПЕСОЧНИЦА

Разработка ldquoИнтерактивной песочницыrdquo

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

Несмотря на кажущуюся простоту в процессе изготовления экспоната команде пришлось столкнуться с немалым количеством подводных камней ndash проектор отказывался работать в вертикальном положении карта высот была сильно зашумлена и мерцала а разработанное ПО работало очень медленно Однако все эти сложности были успешно преодолены и ldquoИнтерактивная песочницаrdquo

увидела свет ndash и как и надеялись её создатели - стала самым популярным экспонатом и символом вновь открывшегося музея

После серии мероприятий в которых команда laquoПесочницыraquo принимала участие разработчики задумались о возможности коммерциализации проекта Было понятно что для продажи и больших демонстраций существующая модель не подходит ndash громоздкий корпус недостаточно привлекательная картинка мерцающее изображение а также анимированная вода похожая скорее на кисель чем на воду Им нужен был новый корпус новое ПО и обязательно laquoживаяraquo реалистичная вода Точнее физически корректная модель воды работающая во взаимодействии с постоянно изменяющимся ландшафтом Это позволило бы разработчикам реализовать демонстрацию таких явлений как извержения вулканов таяние ледников разрыв дамбы Появление реальной воды а не просто анимированных текстур сделало бы ldquoПесочницуrdquo полезной

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 7: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 7

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

Реализация симуляции воды

Программное обеспечение было создано на базе библиотеки OpenGL Командой было разработано несколько видов фильтров применяя которые они получили сглаженную стабильную и незашумленную карту высот Было добавлено освещение новая анимация воды собран новый корпус ndash новая песочница стала выглядеть практически идеально Дело осталось за малым ndash реализовать симуляцию воды

Для решения этой задачи разработчики обратились к архитектуре параллельных вычислений NVIDIA CUDA В качестве математической модели была выбрана система уравнений мелкой воды Если на центральном процессоре вычисления для сетки 320 х 240 вершин (а именно столько требовалось получить учитывая разрешение карты глубины) производились со скоростью 2-3 кадра в секунду то после портирования вычислений на GPU разработчики добились стабильных 25 ndash 30 FPS (с использованием мобильной видеокарты среднего класса) Этого уровня производительности было вполне достаточно для проведения эффектных демонстраций

Большой наградой для проекта стало приглашение одного из разработчиков в качестве спикера на GPU Technology Сonference 2014 где он получил возможность рассказать о проделанной работе широкой аудитории увлеченной темами связанными с использованием GPU для решения вычислительных задач

Дополнительная информация о проекте Рудь Максим Николаевич rudmax13gmailcom

ОБЫГРАЙТЕ СВОИХ ДРУЗЕЙ В FANTASY-ФУТБОЛ С ПОМОЩЬЮ ВЫЧИСЛЕНИЙ НА GPUУ вас на кону $500 Вам осталось забить всего один гол чтобы забрать наличные И в этот момент какой-то счастливчик угрожает побить вашу ставку которую вы так хорошо продумали Что вы будете делать Закричите от разочарования Или примите вызов и удвоите ставку

Благодаря Swish Analytics и GPU теперь вы можете узнать свои шансы на выигрыш так же быстро как игроки двигаются по полю

laquoС помощью приложения для мобильного устройства мы хотим предоставить бетторам и игрокам fantasy-футбола шанс делать более выгодные ставки отслеживать результаты своих команд и управлять играмиraquo - объясняет Кори Бьюмонт (Corey Beaumont) исполнительный директор Swish

Подобная гибкость открывает огромные возможности Swish начала с внедрения аналитических инструментов используемых в индустрии кредитных карт на рынке ставок на спорт который оценивается в $1 триллион А затем компания решила ускорить вычисления своих прогнозов с помощью GPU Результатом стал аналитический подход который решительно завоевывает симпатию как завзятых бетторов так и обычных спортивных фанатов

Это заставило 27-летнего предпринимателя и его соучредителей Джо Хагена (Joe Hagen) и Бобби Скоффа (Bobby Skoff) уйти из мира финансов где они разработали и продали стартап ChargeSmart Они ушли в спортивное букмекерство которое кардинально меняется за счет постоянного распространения данных

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 8: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 8

laquoМы все увлекаемся ставками на спорт fantasy-спортом и аналитикой спортивных событий - рассказывает Бьюмонт большой фанат баскетбольного клуба Golden State Warriors - Поэтому мы поставили себе задачу создать Swish для таких людей как и мыraquo

Swish использует те же математические модели к которым прибегают кредиторы чтобы оценить надежность заемщика и применяет их к спортивным событиям Умники в области спорта любят статистику Но эта статистика основана на оценке прошлых событий как игрок сыграл в последних играх или сезонах

В чем заключается замысел Swish Спортивное букмекерство и fantasy-спорт процветают и освещение спортивных событий все больше стремится к интерактивности поэтому потребность в точных и надежных прогнозных данных растет Каждый год только в США фанаты делают спортивные ставки на сумму около $400 миллиардов В мире эта цифра достигает $1 триллиона

Swish Analytics предлагает своим подписчикам комплекс визуально привлекательных информационных панелей и инструментов доступных через сеть

Swish дает подписчикам прогнозы относительно итогов каждой игры указывает возможность выигрыша в процентах предоставляет анализ результатов игроков и работы арбитров а также сотни других видов статистических данных Анализ ставок в одном виде спорта стоит $99 в месяц Инструменты которые помогают fantasy-игрокам набирать успешные команды доступны по цене $20 в месяц для одного вида спорта

И хотя Swish не обещает постоянных побед достигнутые результаты впечатляют К примеру Swish сообщает о 30-процентной окупаемости инвестиций бетторов которые последовали рекомендациям во всех играх последнего сезона НФЛ

Более высокие результаты с GPU

Но Swish стремится к более высоким результатам В ноябре прошлого года на конференции в Лос-Анджелесе Dodgersrsquo Accelerator Swish представила интерактивное прогнозирование которое осуществляется с той же скоростью с которой разворачиваются события на поле

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 9: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 9

Команда Swish Analytics с Ирвином laquoМэджикraquo Джонсоном (Earvin ldquoMagicrdquo Johnson) на конференции Dodgersrsquo Accelerator в Лос-Анджелесе

Чтобы создать свою laquoмагиюraquo Swish использует данные из более 30 различных источников Эти данные перенаправляются на NVIDIA GPU чтобы вычислить вероятность победы каждой команды предполагаемый счет игры и дать прогноз относительно трех основных типов ставок ставки на победителя матча ставки на победителя матча с учетом форы и одиночная ставки на laquoбольшеменьшеraquo

Чтобы обеспечить работу подобного сервиса Swish использует графические процессоры NVIDIA через Amazon Web Services (AWS) Производительность NVIDIA GPU позволяет быстро обработать все полученные данные В отличие от CPU которые работают одновременно всего над несколькими задачами GPU способны выполнять параллельно тысячи вычислительных задач (читайте ldquoВ чем разница между CPU и GPUrdquo)

Разработчики Swish использовали платформу параллельных вычислений NVIDIA CUDA чтобы выполнять запросы на GPU с помощью алгоритмов написанных на традиционных языках Python и R laquoВо время разработки интерактивных аналитических инструментов для НФЛ это значительно повлияло на число итераций которые мы могли выполнятьraquo - рассказал Бьюмонт

Это дает надежду открыть доступ к аналитическим возможностям высокого уровня для обычных бетторов Так как самые крупные спортивные букмекеры и бетторы используют данные полученные в режиме реального времени для размещения даже небольших ставок

Следующая крупная ставка

Но это еще не все Вскоре по словам Бьюмонта Swish сможет прогнозировать ставки еще до того как они сделаны К примеру Swish позволит пользователям узнать что будет если футбольный игрок будет вести мяч или передаст его другому а также как это изменит ход всей игры

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

laquoЭто будет напоминать то как мы смотрит прогноз погодыraquo - говорит Бьюмонт - laquoТолько данные будут более точнымraquo

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 10: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 10

ВЕБИНАРЫ НА АНГЛИЙСКОМ ЯЗЫКЕ Последние записи на английском языке

Free OpenACC Course

Real time Low Latency Feature Tracking with ArrayFire

More Science Less Programming with OpenACC

Deep Learning Courses

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 11: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 11

Захаров Д Н Шмалько Е Ю

В настоящее время для решения задач оптимизации применяется несколько методов в том числе и эволюционные алгоритмы В данной статье раскрывается применение технологии NVIDIA CUDA для ускорения работы генетического алгоритма

При разработке системы управления мобильными роботами [1 c 1] потребовалось решить задачу оптимизации скалярной функции Цель функционирования системы управления заключается в максимально оперативной обработке поступающей от роботов информации и отправки им новых данных Применение технологии CUDA и направлено на решение проблемы ускорения вычислений системой управления

Постановка задачи

Имеется некоторая функция F(X) где X - вектор удовлетворяющий ограничениям для каждого компонента B

Изменяя вектор X необходимо максимизировать значение M функции F(X) В нашем случае рассматривается функция

(1)

Ограничения заданы в диапазонах

(2)

Решение задачи

Решение поставленной задачи с помощью генетического алгоритма потребовало разработки программы на языке C++ Предпочтение отдано данному языку так же по причине того что NVIDIA CUDA SDK ориентировано на языки CC++ и отсутствует необходимость в дополнительной разработке модулей для работы на других языках

Разработанная программа разделена на логические блоки каждый блок представляет собой операцию генетического алгоритма Такая структура выбрана для простоты и удобства последующей модернизации алгоритма

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

Непосредственно перенос выполнения вышеперечисленных функций на GPU потребовал разработки дополнительных функций для подготовки областей памяти доступной на CPU и GPU Технология CUDA не подразумевает использование общей с центральным процессором памяти Именно этим и обусловлена их разработка

УСКОРЕНИЕ РАБОТЫ АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ ОПТИМИЗАЦИИ ПРИ РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 12: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 12

Вычисления на GPU предполагают возможностью использования совместимой пользовательской видеокарты Проблема состоит в том что технические характеристики этих видеокарт разные от поколения к поколению и внутри линейки любого модельного года Для запуска CUDA-функции необходимо указать сколько нитей в блоке и сколько блоков в сетке будет использовано При этом необходимо учесть индивидуальные характеристики видеокарты Параметры выбраны под конфигурацию видеокарты компьютера на котором разрабатывалась программа Параметры равны 1024 нити и переменное количество блоков в зависимости от размера популяции

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

Учитывая вышеупомянутые особенности ndash при решении задачи с помощью технологии CUDA преимущество перед алгоритмом для CPU может быть получено только после разработки алгоритма позволяющего учитывать особенности работы с GPU На laquoРис 1raquo приведена блок схема CPU версии генетического алгоритма

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 13: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 13

Pис 1 Блок схема алгоритма для CPU

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

Код CUDA ядра для вычисления функции живучести

__global__

void evaluate_cuda(genotype population)

определение индекса нити

int idx = blockIdxx blockDimx + threadIdxx

вычисление живучести

population[idx]fitness = (population[idx]gene[0] population[idx]gene[0]) ndash (population[idx]gene[0] population[idx]gene[1]) + population[idx]gene[2]

Результаты проведенных экспериментов показали что скорость работы алгоритма с применением CUDA оправдана только на популяциях большого размера Преимущество в скорости начинает проявляться при размере популяции более 2000 хромосом

Для того чтобы обработать популяцию на GPU необходим ряд дополнительных действий

bull процедуры объявления указателей на области памяти CPU и GPU

bull непосредственно выделение памяти на GPU

bull копирование данных из CPU в GPU

bull вызов CUDA ядра

bull копирование результатов обратно в память CPU

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

Выполнено несколько прогонов разработанной программы с различными вариантами размера популяции laquoРис 2raquo

Рис 2 Время выполнения программы в зависимости от размера популяции

Результат

Преимущество полученное от применения технологии CUDA начинает проявляется после размера популяции в 2000 элементов На популяциях малого размера алгоритм выполняющийся на CPU работает быстрее тк он содержит вспомогательных процедур направленных на подготовку и пересылку данных по шине PCI-E от процессора к видеокарте

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 14: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 14

Выводы

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

Подробнее

ПОИСК ИЗОБРАЖЕНИЙ ПО ЦВЕТУ

Волосач ДА Недведский АЮ

БГУИР valueincorporationgmailcom

НИЧ БГУИР zevsolimp555gmailcom

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

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

Поиск изображений по цветовой гамме Этот метод основан на выделении преобладающих цветов в исходном изображении либо задания их в явном виде и поиска похожих изображений на основе этих данных В этом случае два изображения считаются похожими если концентрация преобладающих цветов в них одинакова или близка в пределах некоторой окрестности Одним из примеров реализации подобных систем является Multicolor Engine от TinEye Эта система позволяет выбрать до 5 произвольных цветов и настроить желаемую концентрацию Также можно уточнить поиск с помощью текстового описателя дополнительно классифицирующего отыскиваемые изображения

Поиск изображений по образцу Этот метод основан на представлении системе образца изображения и нахождения похожих по тем или иным критериям на этот образец изображений Выходные изображения могут быть ярче тусклее иначе позиционированы масштабированы и так далее Такие системы как правило не производят содержательного анализа сцены а вычисляют некоторый параметр на основании которого два изображения считаются похожими к примеру перцептивный хэш [1] В случае если расстояние Хэмминга (количество различающихся бит) между хэшами двух изображений мало (не превышает 10) изображения считаются похожими

Поиск изображений по содержанию Этот метод является наиболее сложным так как основан на непосредственном анализе самой сцены В частности метод SIFT описанный в [2] определённым образом вычисляет так называемые laquoконтрольные точкиraquo для рассматриваемого и заданного изображения и сравнивает их Этот подход устраняет явный недостаток предыдущих методов а именно то что в предыдущих методах вклад в получение результата вносил каждый пиксель изображения независимо от его информационного содержания тогда как реальный вклад вносит лишь ограниченное подмножество пикселей

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 15: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 15

Так как рассматриваемая в данной работе система использует первый метод то возникает вопрос о способе задания входных данных пользователем Как было указано выше пользователь может как задать изображение-образец и тогда система сама определит преобладающие в заданном изображении цвета и их концентрацию или же можно непосредственно дать возможность пользователю указать цвета по которым будет производиться поиск Именно второй подход был использован при построении рассматриваемой системы

Базовый алгоритм использующийся для построения такого рода систем называется методом цветовых гистограмм и описан в [3] В этом методе всё RGB-пространство разбивается на конечное число одинаковых блоков Цвета поступившие от пользователя попадая в конкретный блок позволяют системе идентифицировать его и зафиксировать после чего каждому целевому блоку заводится счётчик Если какой-либо цвет из рассматриваемого изображения попадает в какой-либо из зафиксированных блоков значение соответствующего счётчика инкрементируется В результате для каждого изображения на выходе имеются концентрации цветов близких к заданным после чего эти концентрации сравниваются с эталонными и на основе этого сравнения производится вывод о их схожести

В ходе проектирования системы было обнаружено что данный алгоритм обладает существенным недостатком Дело в том что область RGB-пространства в пределах которого два цвета считаются похожими распределена более или менее равномерно лишь для цветов лежащих в центре блока Для устранения этой проблемы было принято решение о введении некоторой метрики которая бы служила критерием похожести двух цветов В частности в данной работе было использовано евклидово расстояние Геометрически область пространства в пределах которого два цвета будут считаться похожими можно представить в виде сферы центром которой является один из сравниваемых цветов

Как правило задачи связанные с обработкой изображений являются ресурсоёмкими Это связано прежде всего с тем что изображения по сути являются большими массивами данных над которыми необходимо производить далеко не тривиальные действия К счастью большинство подобных алгоритмов выполняют однородные или даже одинаковые действия над каждым элементом изображения что позволяет нам laquoраспараллелитьraquo задачу Так в рассматриваемой системе классификация каждого пикселя изображения происходит независимо от остальных за счёт использования технологии параллельных вычислений CUDA от NVIDIA

С целью дальнейшего повышения производительности было принято решение о ещё большем распараллеливании задачи Так было принято во внимание что база исходных изображений может иметь произвольный размер равно как и сами изображения что может негативно сказаться на производительности в случае запуска приложения на машине стандартной комплектации при достаточно большом объёме базы В результате приложение было усовершенствовано с использованием технологии MPI (Message Passing Interface) позволяющей с лёгкостью распределять задачи по нескольким машинам или процессорам

Список использованных источников

1 Старовойтов ВВ Цифровые изображения от получения до обработки ВВ Старовойтов ЮИ Голуб ndash Минск ОИПИ НАН Беларуси 2014 ndash 212 с ndash ISBN 978-985-6744-80-1

2 Некоторые подходы к организации содержательного поиска изображений и видеоинформации [Электронный ресурс] ndash Электронные данные

3 laquoВыглядит похожеraquo Как работает перцептивный хэш [Электронный ресурс] ndash Электронные данные

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 16: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 16

ПОЛЕЗНЫЕ РЕСУРСЫ ПО CUDA

Группа вконтакте wwwvkcomnvidiacuda

Новый каталог с 370 приложениями ускоряемыми на GPU можно скачать по ссылке

Материалы GPU Technology Conference 2015 доступны по ссылке

Форум Разработчиков NVIDIAприсоединяйтесь к Форуму CUDA-разработчиков делитесь своим опытом и узнавайтемного нового httpdevtalknvidiacom

Документация по CUDAСо списком документации по CUDA можно ознакомиться здесь

Обучение онлайнUdacity | Coursera | Курс на русском языке

Библиотеки с поддержкой GPU ускоренияСписок библиотек с поддержкой GPU ускорения от NVIDIA и партнеров

GPU Тест-Драйв Хотите бесплатно протестировать Tesla Зарегистрируйтесь здесь

Ускоряйте научные приложения с OpenACCПротестируйте компилятор PGI OpenACC бесплатно в течение месяца Подробнее

Книги посвященные CUDA и вычислениям на GPUСо списком книг посвященных CUDA и вычислениям на GPU можно ознакомиться здесь

СкачайтеCUDA httpdevelopernvidiacomcuda-downloads Nsight httpwwwnvidiacomobjectnsighthtml

Страница NVIDIA в vkcomhttpsvkcomnvidia

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 17: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 17

ВАКАНСИИ CUDA СПЕЦИАЛИСТ ПО МАШИННОМУ ЗРЕНИЮ

Авито

Москва

В отдел аналитики Авито очень нужен опытный специалист по компьютерному зрению с опытом анализа больших объемов данных Основная задача отдела аналитики - с помощью различных методов анализа данных и машинного обучения делать бизнес Авито еще более эффективным а наших любимых пользователей еще более счастливыми Мы используем одни из самых продвинутых технологий колоночное хранилище HP Vertica систему визуализации Tableau и одни из наиболее продвинутых алгоритмов машинного обучения для решения различных задач Мы работаем с реально большими данными потому что только за 1 день логируем больше 1 млрд новых событий В команде 3 кандидата физико-математических наук выпускники физтеха МГУ и других вузов

Чтобы делать наш сервис все более полезным и простым в использовании для наших пользователей мы ставим перед собой все более и более сложные аналитические задачи Огромный потенциал скрыт в миллиардах изображений которые пользователи загружают на Авито Мы верим в то что раскрыв этот потенциал мы сможем принципиально изменить опыт взаимодействия пользователей с Авито

Мы ожидаем что Выbull Имеете опыт решения различных Computer Vision Data Science задач c использованием Python C++ или других языковbull Имеете опыт использования Caffe Tensorflow Theano или других Deep Learning фреймворковbull Знакомы с особенностями современных GPUbull Умеете оценивать качество моделей построенных для различных задач машинного обученияbull Умеете распараллеливать задачи по обработке больших массивов данных на Pythonbull Знаете SQLbull Получили высшее образование в области вычислительной математики статистики анализа данных и тп bull Адекватны хотите работать и учиться не склонны к конфликтам

Не обязательно но круто если Выbull Имеете опыт не только прототипирования computer vision проектов но и их успешного внедрения в высоконагруженный productionbull Успешно участвовали в различных открытых соревнованиях по анализу данных связанных с компьютерным зрением

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom

Page 18: CUDA® АЛЬМАНАХ ФЕВРАЛЬ 2016

CUDA АЛЬМАНАХ ФЕВРАЛЬ 2016 18

Мы предлагаем Вамbull интересные задачи на большом проекте с топовыми технологиямиbull большую свободу в выборе средств и подходов решения задачbull достойную заработную плату по результатам собеседования + доп мотивация в перспективеbull работа с передовыми технологиями хранения визуализации и анализа данныхbull работу в нормальной западной компании с вменяемым руководством адекватным отношением к сотрудникам и надёжным финансированиемbull посещение профильных конференций за счёт компанииbull медицинское страхование (ДМС)

Подробнее Aleksandra Golovina agolovinaavitoru

КОНТАКТЫ

Если вы хотите чтобы ваша статья

появилась в следующем выпуске

CUDA Альманах пишите нам на

Лидия Андреева

landreevanvidiacom

По вопросам приобретения NVIDIA GPU и

по прочим техническим

вопросам пишите нам на

Антон Джораев

adzhoraevnvidiacom