Путеводитель по сайту

Что такое NVIDIA CUDA?

English version Распечатать

 

***

Что такое NVIDIA CUDA?

CUDA, CUDA, CUDA вы удалились,

«Мощей» центрального процессора златые дни?..

(Компьютерные байки)

 

 

 

Немного терминологии

API (сокр. от англ. Application Programming Interface) – программный интерфейс приложения.

 

DirectX – набор низкоуровневых программных интерфейсов (API) для создания игр и других высокопроизводительных мультимедиа-приложений. Включает поддержку высокопроизводительной 2D- и 3D-графики, звука и устройств ввода.

 

Direct3D (D3D) – интерфейс вывода трёхмерных примитивов (геометрических тел). Входит в DirectX.

 

OpenGL (от англ. Open Graphics Library, дословно – открытая графическая библиотека) – спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двухмерную и трёхмерную компьютерную графику. Включает более 250 функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании видеоигр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с DirectX.

 

OpenCL (от англ. Open Computing Language, дословно – открытый язык вычислений) – фреймворк (каркас программной системы) для написания компьютерных программ, связанных с параллельными вычислениями на различных графических (GPU) и центральных процессорах (CPU). В фреймворк OpenCL входят язык программирования и интерфейс программирования приложений (API). OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных и является реализацией техники GPGPU.

 

GPGPU (сокр. от англ. General-Purpose Graphics Processing Units, дословно – GPU общего назначения) – техника использования графического процессора видеокарты для общих вычислений, которые обычно проводит центральный процессор.

 

Шейдер (англ. shader) – программа построения теней на синтезируемых изображениях, используется в трёхмерной графике для определения окончательных параметров объекта или изображения. Как правило, включает произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражения и преломления, затенения, смещения поверхности и эффекты пост-обработки. Сложные поверхности могут быть визуализированы при помощи простых геометрических форм.

 

Рендеринг (англ. rendering) – визуализация, в компьютерной графике процесс получения изображения по модели с помощью программного обеспечения.

 

SDK (сокр. от англ. Software Development Kit) – набор инструментальных средств разработки программного обеспечения.

 

CPU (сокр. от англ. Central Processing Unit, дословно – центральное/основное/главное вычислительное устройство) – центральный (микро)процессор; устройство, исполняющее машинные инструкции; часть аппаратного обеспечения ПК, отвечающая за выполнение вычислительных операций (заданных операционной системой и прикладным программным обеспечением) и координирующая работу всех устройств ПК.

 

GPU (сокр. от англ. Graphic Processing Unit, дословно – графическое вычислительное устройство) – графический процессор; отдельное устройство ПК или игровой приставки, выполняющее графический рендеринг (визуализацию). Современные графические процессоры очень эффективно обрабатывают и реалистично отображают компьютерную графику. Графический процессор в современных видеоадаптерах применяется в качестве ускорителя трёхмерной графики, однако его можно использовать в некоторых случаях и для вычислений (GPGPU).

 

 

Проблемы CPU

Долгое время повышение производительности традиционных одноядерных процессоров в основном происходило за счёт последовательного увеличения тактовой частоты (около 80% производительности процессора определяла именно тактовая частота) с одновременным увеличением количества транзисторов на одном кристалле. Однако дальнейшее повышение тактовой частоты (при тактовой частоте более 3,8 ГГц чипы попросту перегреваются!) упирается в ряд фундаментальных физических барьеров (поскольку технологический процесс почти вплотную приблизился к размерам атома: сегодня процессоры выпускаются по 45-нм технологии, а размеры атома кремния – приблизительно 0,543 нм):

• во-первых, с уменьшением размеров кристалла и с повышением тактовой частоты возрастает ток утечки транзисторов. Это ведёт к повышению потребляемой мощности и увеличению выброса тепла;

• во-вторых, преимущества более высокой тактовой частоты частично сводятся на нет из-за задержек при обращении к памяти, так как время доступа к памяти не соответствует возрастающим тактовым частотам;

• в-третьих, для некоторых приложений традиционные последовательные архитектуры становятся неэффективными с возрастанием тактовой частоты из-за так называемого «фон-неймановского узкого места» – ограничения производительности в результате последовательного потока вычислений. При этом возрастают резистивно-ёмкостные задержки передачи сигналов, что является дополнительным узким местом, связанным с повышением тактовой частоты.

 

 

Развитие GPU

Параллельно с совершенствованием CPU шло (и идет!) развитие GPU:

• …

• Ноябрь 2008 г. – Intel представила линейку 4-ядерных центральных процессоров Intel Core i7, в основу которых положена микроархитектура нового поколения Nehalem. Процессоры работают на тактовой частоте 2,6-3,2 ГГц. Выполнены по 45-нм техпроцессу.

• Декабрь 2008 г. – начались поставки 4-ядерного центрального процессора AMD Phenom II 940 (кодовое название – Deneb). Работает на частоте 3 ГГц, выпускается по техпроцессу 45-нм.

• …

• Май 2009 г. – компания AMD представила версию графического процессора ATI Radeon HD 4890 с тактовой частотой ядра, увеличенной с 850 МГц до 1 ГГц. Это первый графический процессор, работающий на частоте 1 ГГц. Вычислительная мощность чипа, благодаря увеличению частоты, выросла с 1,36 до 1,6 терафлоп. Процессор содержит 800 (!) вычислительных ядер, поддерживает видеопамять GDDR5, DirectX 10.1, ATI CrossFireX и все другие технологии, присущие современным моделям видеокарт. Чип изготовлен на базе 55-нм технологии.

 

 

Основные отличия GPU

Отличительными особенностями GPU (по сравнению с CPU) являются:

– архитектура, максимально нацеленная на увеличение скорости расчёта текстур и сложных графических объектов;

– пиковая мощность типичного GPU намного выше, чем у CPU;

– благодаря специализированной конвейерной архитектуре, GPU намного эффективнее в обработке графической информации, чем центральный процессор.

 

 

«Кризис жанра»

«Кризис жанра» для CPU назрел к 2005 г., – именно тогда появились первые 2-ядерные процессоры. Но, несмотря на развитие технологии многоядерности, рост производительности обычных CPU заметно снизился. В то же время производительность GPU продолжает расти. Так, к 2003 г. и кристаллизовалась эта революционная идея – использовать для нужд центрального процессора вычислительную мощь графического. Графические процессоры стали активно использоваться для «неграфических» вычислений (симуляция физики, обработка сигналов, вычислительная математика/геометрия, операции с базами данных, вычислительная биология, вычислительная экономика, компьютерное зрение и т.д.).

 

Главная проблема заключалась в том, что не было никакого стандартного интерфейса для программирования GPU. Разработчики использовали OpenGL или Direct3D, но это было очень удобно. Корпорация NVIDIA (один из крупнейших производителей графических, медиа- и коммуникационных процессоров, а также беспроводных медиа-процессоров; основана в 1993 г.) занялась разработкой некоего единого и удобного стандарта, – и представила технологию CUDA.

 

 

Как это начиналось

• 2006 г. – NVIDIA демонстрирует CUDA™; начало революции в вычислениях на GPU.

• 2007 г. – NVIDIA выпускает архитектуру CUDA (первоначальная версия CUDA SDK была представлена 15 февраля 2007 г.); номинация «Лучшая новинка» от журнала Popular Science и «Выбор читателей» от издания HPCWire.

• 2008 г. – технология NVIDIA CUDA победила в номинации «Техническое превосходство» от PC Magazine.

 

 

Что такое NVIDIA CUDA?

 

 

Что такое CUDA

CUDA (сокр. от англ. Compute Unified Device Architecture, дословно – унифицированная вычислительная архитектура устройств) – архитектура (совокупность программных и аппаратных средств), позволяющая производить на GPU вычисления общего назначения, при этом GPU фактически выступает в роли мощного сопроцессора.

Технология NVIDIA CUDA™ – это единственная среда разработки на языке программирования C, которая позволяет разработчикам создавать программное обеспечение для решения сложных вычислительных задач за меньшее время, благодаря многоядерной вычислительной мощности графических процессоров. В мире уже работают миллионы GPU с поддержкой CUDA, и тысячи программистов уже пользуются (бесплатно!) инструментами CUDA для ускорения приложений и для решения самых сложных ресурсоёмких задач – от кодирования видео- и аудио- до поисков нефти и газа, моделирования продуктов, вывода медицинских изображений и научных исследований.

 

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

 

Юрий Уральский, ведущий специалист по технологиям NVIDIA, сравнивая GPU и CPU, говорит так: «CPU – это внедорожник. Он ездит всегда и везде, но не очень быстро. А GPU – это спорткар. На плохой дороге он просто никуда не поедет, но дайте хорошее покрытие, – и он покажет всю свою скорость, которая внедорожнику и не снилась!..».

 

 

Возможности технологии CUDA

– стандартный язык C для параллельной разработки приложений на GPU;

– стандартные библиотеки численного анализа для быстрого преобразования Фурье и базового пакета программ линейной алгебры;

– специальный драйвер CUDA для вычислений с быстрой передачей данных между GPU и CPU;

драйвер CUDA взаимодействует с графическими драйверами OpenGL и DirectX;

– поддержка операционных систем Linux 32/64-bit, Windows XP 32/64-bit и Mac.

 

 

Набор инструментов CUDA

CUDA™ Toolkit – это среда разработки для GPU с поддержкой CUDA, основанная на языке C. Среда разработки CUDA включает:

C-компилятор nvcc;

– библиотеки FFT и BLAS для GPU;

– профилировщик;

– отладчик gdb для GPU;

драйвер CUDA runtime;

– руководство по программированию.

 

 

Примечания

1. Технология NVIDIA CUDA не предлагает замену традиционному CPU и не оспаривает его первенства и главенства: GPU выступает в роли мощного со-процессора, то есть помощника центрального процессора.

2. Технология NVIDIA CUDA поддерживается графическими процессорами ускорителей GeForce (начиная с восьмого поколения – GeForce 8 Series, GeForce 9 Series, GeForce 200 Series), Nvidia Quadro и Tesla.

3. Программисты, желающие опробовать технологию CUDA, могут загрузить CUDA-ресурсы (CUDA driver, CUDA toolkit, CUDA SDK) со страницы CUDA Zone – Загрузить CUDA.

 

Валерий Сидоров

 

 

 

***

Раскрывая тайны Windows…

Дело о…

Статьи о ПК и PC

Вирусы vs. антивирусы

Apple = iСтив + iPod + iPhone + iPad + iTunes + iMac + …

Apps for iPad, iPhone, iPod touch…

 

 

 

 

 

Путеводитель по сайту

18+

© 2020All rights reserved.

Авторство всех материалов сайта https://netler.ru принадлежит Валерию Сидорову и охраняется Законом о защите авторских прав. Использование материалов сайта в offline-изданиях без согласования с автором категорически запрещается. В online-изданиях разрешается использовать материалы сайта при условии сохранения имени и фамилии автора и активной гиперссылки на сайт https://netler.ru.