ДонНТУ   Портал магистров

Технология GPU NVIDIA CUDA — суперкомпьютер в каждом доме

С каждым днем мы все чаще и чаще слышим слово «CUDA». А что оно означает знают далеко не все. Именно с этим словом я и хочу Вас познакомить на странице моего индивидуального раздела, опираясь на самые интересные статьи, связанные с данной тематикой. Выбор именно этой темы не является случайным, так как в ходе выполнения магистерской работы мне посчастливилось познакомиться и в достаточной степени освоить данную относительно новую, но очень прогрессивную технологию. Каждый владелец компьютера с современной видеокартой NVIDIA является обладателем «портативного суперкомпьютера», потенциал которого открывает невиданные до этого перспективы разработки. О самых известных проектах, базирующихся на технологии CUDA, повествуется дальше.

1. Расчёты на GPU. Предыстория

Логотип компании NVIDIA
Логотип компании NVIDIA

Само по себе такое направление, как расчёты на GPU, не такое уж и молодое. Идея таких расчётов впервые появилась примерно в 2003 году. Выход NV30 обеспечил достаточно высокий уровень программируемости GPU — произвольный код стало возможно запускать в виде графических шейдеров. Тогда использовался исключительно графический интерфейс как для ввода начальных данных и кода, так и для считывания результата. Об удобстве не было и речи, но тем не менее какие-то реальные задачи уже можно было решать. Это был первый фактор. Вообще же любой видеоускоритель в основе имеет массивно-параллельную архитектуру, когда великое множество относительно медленных элементов (ядер) работают одновременно. Это значит, что пиковая мощность типичного GPU намного выше, чем у CPU. Встаёт только вопрос об утилизации этой мощности. И это был второй фактор. Именно эти два фактора стали предпосылками для развития GPGPU (концепция вычислений общего назначения на GPU) в целом [1].

2. Что такое CUDA?

Главная проблема заключалась в том, что не было никакого стандартного интерфейса для программирования GPU. Разработчики использовали OpenGL или Direct3D, но это было не очень удобно. По этой причине NVIDIA занялась разработкой некоего единого и удобного стандарта и к выходу G80 представила технологию CUDA.

NVIDIA CUDA — это «архитектура, т.е. совокупность программных и аппаратных средств, которые позволяют производить на GPU вычисления общего назначения». Официально аббревиатура CUDA расшифровывается так: Compute Unified Device Architecture. На данный момент есть готовый SDK, который пока что использует язык программирования C. Но в скором будущем появится поддержка Fortran (очень популярный язык в научной среде) и C++. Вообще никаких принципиальных ограничений на язык или модель программирования нет, лишь бы была возможность создавать параллельный код. Причём параллелизм несколько отличается от того, который подразумевается при работе с CPU. В случае разработки приложений для традиционных CPU речь идёт о параллелизме задач — один программный модуль исполняется на одном ядре, другой на втором и т.д. Когда речь идет о CUDA, то говорят о параллелизме данных. Подразумевается, что данных у нас всегда много и больше, чем физических процессоров.

Ещё один ключевой момент архитектуры CUDA — лёгкая масштабируемость. Единожды написанный код будет запускаться на всех устройствах, поддерживающих CUDA. Для разработки и отладки кода для запуска на GPU можно использовать обычные видеокарты. А когда продукт готов — запускать его уже на мощных Tesla. Это очень удобно [1].

3. Проблемы традиционных CPU. Роль GPGPU в жизни NVIDIA

Направление GPU–компьютинга очень важно для NVIDIA. С момента запуска архитектуры G80 в 2006 году было выпущено более 100 млн видеоускорителей, которые поддерживают CUDA. И каждую неделю продаётся ещё один миллион CUDA–capable устройств. Это даёт право называть технологию массовой.

Еще несколько лет назад казалось, что интерес к параллельному программированию утих — мощные кластеры стали собираться из компонентов для обычных PC. Но примерно с 2005 года скорость роста производительности обычных CPU сильно упала, а GPU — нет. NVIDIA же предлагает с каждым годом всё большую производительность и масштабируемость. Именно это привлекает потребителей и разработчиков.

4. CUDA в действии

4.1 CUDA + Исследования

Обзор STMV, показывает защитную оболочку, заключающую геном вируса
Месторасположение ионов (оранжевые), содержащих геном вируса, схема расположения построена при использовании программы с поддержкой CUDA–ускорения

Вирусы, возбудители многих болезней, являются самыми маленькими известными живыми организмами на планете. В силу простоты строения и маленького размера вирусов исследователи в области вычислительной биологии выбрали их для своей первой попытки создать полную модель формы жизни при помощи компьютера, выбрав для своих экспериментов один из самых крошечных вирусов — вирус табачной мозаики. Они использовали программу под названием NAMD (Nanoscale Molecular Dynamics), разработанную Университетом Иллинойса в Урбане-Шампэйн, для моделирования вируса в капле соленой воды [23].

Работа NAMD была ускорена почти в 12 раз благодаря CUDA™ и в целом показала прирост скорости в 330 раз по сравнению с одноядерным CPU при запуске на кластере с GPU–ускорением в Национальном центре суперкомпьютерных приложений (NCSA). Исследователи оптимистичны в своих оценках и уверенны, что этот шаг будет способствовать развитию современной медицины и обеспечит лучшее понимание и лечение вирусных болезней.


4.2 CUDA + Медицина

Объемные, продольные, коронные и стреловидные изображения из системы TechniScan WBU.

Возможность получать детализированные изображения в короткие сроки особенно важна в области сканирования грудной полости в поисках рака. Разработчик автоматизированных систем для создания ультразвуковых изображений, компания Techniscan, произвела портирование своего авторского алгоритма с традиционных систем на основе CPU на CUDA™ и графические процессоры NVIDIA® Tesla™.

Система на базе CUDA способна отработать алгоритм Techniscan менее чем за 20 минут, что в три раза превышает возможности старых систем. Как только разработчики получат разрешение на использование этого исследовательского устройства в лечебных целях, пациенты смогут получать результаты обследования всего за один визит [2].


4.3 CUDA + Финансы

«Графические процессоры NVIDIA становятся основой управления рисками портфеля в реальном времени при помощи Volera»
«Вычисление предполагаемых изменений и спорных моментов для всего рынка опционов на акции США в режиме реального времени»

Фирма Hanweck Associates, предоставляющая услуги в финансовой сфере и специализирующаяся на инвестициях и управлении рисками, считает обеспечение клиентам возможности пересчитывать опционы в режиме реального времени одной из важнейших своих задач. Для этого Hanweck использует свою разработку, программу Volera, обеспечивающую целый ряд возможностей высокоэффективного анализа опционов. Используя всего 12 графических процессоров с поддержкой CUDA™, Volera проводит анализ всего рынка опционов на акции для США в реальном времени. Ранее эта задача требовала более 60 обычных серверов. Благодаря возможностям CUDA, клиенты Hanweck могут быстрее получить представление о нынешнем быстро меняющемся рынке и в то же время существенно снизить потребление энергии, затраты на оборудование и арендную плату за занимаемые вычислительным центром площади [4].


4.4 CUDA + Новая энергия

«Графические процессоры NVIDIA становятся основой управления рисками портфеля в реальном времени при помощи Volera»
«Вычисление предполагаемых изменений и спорных моментов для всего рынка опционов на акции США в режиме реального времени»

Стоимость бурения глубоких нефтяных скважин может достигать сотен миллионов долларов. В большинстве случаев есть только один шанс успешного результата бурения скважины. Компания SeismicCity разрабатывает и реализует технологию создания глубинных изображений, используемую для интерпретации сейсмических данных, что позволяет выбирать место для новой скважины.

Обеспечивая своим клиентам более высокое качество и эффективность работы с изображениями, SeismicCity перешла на работу с CUDA™ и графические процессоры NVIDIA® серии Tesla™ 8, достигая прироста почти в 14 раз по сравнению с предыдущей конфигурацией, основанной на CPU. Благодаря CUDA, компания SeismicCity может предложить своим клиентам коммерческую реализацию самых продвинутых алгоритмов работы с глубинными изображениями и значительно повысить шансы успешного бурения [5].


5. Светлое будущее

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

В программной модели CUDA глобальных изменений не будет. Будут мелкие постоянные улучшения для более гибкого использования GPU и расширения круга охватываемых задач. Также платформа станет более лояльно относиться к ошибкам в коде, которые могут сильно влиять на производительность [1].

Перечень ссылок:

  1. NVIDIA CUDA — доступный билет в мир больших вычислений [Электронный ресурс]. — Режим доступа: http://www.computerra.ru/interactive/423392/
  2. Официальный сайт NVIDIA CUDA [Электронный ресурс]. — Режим доступа: http://www.nvidia.ru/page/home.html
  3. Theoretical and Computational Biophysics Group [Электронный ресурс]. — Режим доступа: http://www.ks.uiuc.edu/Research/namd/
  4. Hanweck Associates, LLC [Электронный ресурс]. — Режим доступа: http://www.hanweckassoc.com/
  5. SeismicCity [Электронный ресурс]. — Режим доступа: http://www.seismiccity.com/