Технология GPU NVIDIA CUDA — суперкомпьютер в каждом доме
С каждым днем мы все чаще и чаще слышим слово «CUDA». А что оно означает знают далеко не все. Именно с этим словом я и хочу Вас познакомить на странице моего индивидуального раздела, опираясь на самые интересные статьи, связанные с данной тематикой. Выбор именно этой темы не является случайным, так как в ходе выполнения магистерской работы мне посчастливилось познакомиться и в достаточной степени освоить данную относительно новую, но очень прогрессивную технологию. Каждый владелец компьютера с современной видеокартой NVIDIA является обладателем «портативного суперкомпьютера», потенциал которого открывает невиданные до этого перспективы разработки. О самых известных проектах, базирующихся на технологии CUDA, повествуется дальше.
1. Расчёты на GPU. Предыстория
Само по себе такое направление, как расчёты на 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 + Исследования
Вирусы, возбудители многих болезней, являются самыми маленькими известными живыми организмами на планете. В силу простоты строения и маленького размера вирусов исследователи в области вычислительной биологии выбрали их для своей первой попытки создать полную модель формы жизни при помощи компьютера, выбрав для своих экспериментов один из самых крошечных вирусов — вирус табачной мозаики. Они использовали программу под названием NAMD (Nanoscale Molecular Dynamics), разработанную Университетом Иллинойса в Урбане-Шампэйн, для моделирования вируса в капле соленой воды [2–3].
Работа NAMD была ускорена почти в 12 раз благодаря CUDA™ и в целом показала прирост скорости в 330 раз по сравнению с одноядерным CPU при запуске на кластере с GPU–ускорением в Национальном центре суперкомпьютерных приложений (NCSA). Исследователи оптимистичны в своих оценках и уверенны, что этот шаг будет способствовать развитию современной медицины и обеспечит лучшее понимание и лечение вирусных болезней.
4.2 CUDA + Медицина
Возможность получать детализированные изображения в короткие сроки особенно важна в области сканирования грудной полости в поисках рака. Разработчик автоматизированных систем для создания ультразвуковых изображений, компания Techniscan, произвела портирование своего авторского алгоритма с традиционных систем на основе CPU на CUDA™ и графические процессоры NVIDIA® Tesla™.
Система на базе CUDA способна отработать алгоритм Techniscan менее чем за 20 минут, что в три раза превышает возможности старых систем. Как только разработчики получат разрешение на использование этого исследовательского устройства в лечебных целях, пациенты смогут получать результаты обследования всего за один визит [2].
4.3 CUDA + Финансы
Фирма Hanweck Associates, предоставляющая услуги в финансовой сфере и специализирующаяся на инвестициях и управлении рисками, считает обеспечение клиентам возможности пересчитывать опционы в режиме реального времени одной из важнейших своих задач. Для этого Hanweck использует свою разработку, программу Volera, обеспечивающую целый ряд возможностей высокоэффективного анализа опционов. Используя всего 12 графических процессоров с поддержкой CUDA™, Volera проводит анализ всего рынка опционов на акции для США в реальном времени. Ранее эта задача требовала более 60 обычных серверов. Благодаря возможностям CUDA, клиенты Hanweck могут быстрее получить представление о нынешнем быстро меняющемся рынке и в то же время существенно снизить потребление энергии, затраты на оборудование и арендную плату за занимаемые вычислительным центром площади [4].
4.4 CUDA + Новая энергия
Стоимость бурения глубоких нефтяных скважин может достигать сотен миллионов долларов. В большинстве случаев есть только один шанс успешного результата бурения скважины. Компания SeismicCity разрабатывает и реализует технологию создания глубинных изображений, используемую для интерпретации сейсмических данных, что позволяет выбирать место для новой скважины.
Обеспечивая своим клиентам более высокое качество и эффективность работы с изображениями, SeismicCity перешла на работу с CUDA™ и графические процессоры NVIDIA® серии Tesla™ 8, достигая прироста почти в 14 раз по сравнению с предыдущей конфигурацией, основанной на CPU. Благодаря CUDA, компания SeismicCity может предложить своим клиентам коммерческую реализацию самых продвинутых алгоритмов работы с глубинными изображениями и значительно повысить шансы успешного бурения [5].
5. Светлое будущее
В будущем NVIDIA CUDA будет обязательно развиваться. Планируется дальнейшее увеличение энергоэффективности и снижение тепловыделения. Обязательно появятся более производительные продукты. При этом все они будут обратно совместимы с уже существующими.
В программной модели CUDA глобальных изменений не будет. Будут мелкие постоянные улучшения для более гибкого использования GPU и расширения круга охватываемых задач. Также платформа станет более лояльно относиться к ошибкам в коде, которые могут сильно влиять на производительность [1].
Перечень ссылок:
- NVIDIA CUDA — доступный билет в мир больших вычислений [Электронный ресурс]. — Режим доступа: http://www.computerra.ru/interactive/423392/
- Официальный сайт NVIDIA CUDA [Электронный ресурс]. — Режим доступа: http://www.nvidia.ru/page/home.html
- Theoretical and Computational Biophysics Group [Электронный ресурс]. — Режим доступа: http://www.ks.uiuc.edu/Research/namd/
- Hanweck Associates, LLC [Электронный ресурс]. — Режим доступа: http://www.hanweckassoc.com/
- SeismicCity [Электронный ресурс]. — Режим доступа: http://www.seismiccity.com/