Использование параллельных вычислений для графических процессоров с использованием технологий Nvidia Cuda

Определение сущности технологии Cuda, как программно-аппаратной архитектуры Nvidia, основанной на расширении языка программирования C. Изучение ее основных характеристик: оптимизированного обмена данными, поддержки 32- 64-битных операционных систем.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 02.07.2014
Размер файла 340,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Использование параллельных вычислений для графических процессоров с использованием технологий Nvidia Cuda

Технология CUDA - это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка программирования C. CUDA позволяет улучшить возможности видеокарт, в отличии от предыдущих моделей GPGPU, ликвидировав некоторые из важных ограничений, в которых использовались традиционный графический конвейер и соответствующие интерфейсы Direct3D или OpenGL. Стандарты использующие OpenGL позволяют пользоваться одним и тем же кодом для видеочипов разных производителей. Эти методы имеют недостатки, они не удобные в использовании и менее гибкие. Они не позволяют использовать специфические возможности определенных видеокарт, такие, как быстрая разделяемая память. Решив эту проблему, компания NVIDIA выпустила технологию CUDA c C-подобным языком программирования со своим компилятором и библиотеками для вычислений на GPU.

Use of parallel computing for the GPU using technology Nvidia Cuda

Technology CUDA - a software and hardware computing architecture NVIDIA, based on the expansion of the programming language C. CUDA graphics card can improve opportunities, unlike previous models GPGPU, liquidating some of the important restrictions, which used traditional graphics pipeline and associated interfaces Direct3D or OpenGL. Use OpenGL standards allow you to use the same code for GPUs from different manufacturers. These techniques have disadvantages, they are inconvenient to use and less flexible. They do not allow you to use specific features of certain video cards , such as the fast shared memory. Solving this problem, NVIDIA released technology CUDA c C- like programming language with its compiler and libraries for computing on GPU.

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

В это время и вступает в игру не так уже давно получившее массовое признание, направление General-Purpose computation on GPUs (GPGPU) - параллельные вычисления на графических процессорах. Ведь новые видеочипы содержащие сотни математических исполнительных блоков, и что данная мощь может быть приведена для большого ускорения множества вычислительно интенсивных приложений. И современное поколения GPU имеет достаточно гибкую архитектуру, что вместе с программно-аппаратными архитектурами и высокоуровневыми языками программирования, которые раскрывают эти возможности и делают их значительно более доступными [1].

Вычисления на GPU развивались и будут развиваться очень быстро. И на сегодняшний день один из основных производителей видеочипов, NVIDIA, разработал и анонсировал соответствующую платформу под названием Compute Unified Device Architecture (CUDA). Отличие от прошлых моделей программирования GPU, CUDA разработана с прямым доступом к аппаратным возможностям видеокарт. Технология CUDA - это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка программирования C. Платформа CUDA устранила некоторые из важнейших ограничений прошлых моделей GPGPU, использующие соответствующие интерфейсы Direct3D или OpenGL и традиционный графический конвейер.

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

В связи с этим компания NVIDIA выпустила платформу CUDA с C-подобным языком программирования, имеющий свой компилятор и библиотеки для вычислений на GPU. Написание оптимизированного кода для видеочипов совсем не так-то просто и для этой задачи необходимо длительная ручная работа, но CUDA как раз и позволяет раскрыть все возможности, что даёт программисту большой контроль над аппаратными составляющими возможностями GPU [2]. Платформа CUDA предоставляет возможность реализовывать алгоритмы, выполняемые на графических процессорах видеоускорителей моделей GeForce серии 8, 9, 200, а также специализированные для решения расчетных задач GPU семейства Quadro и Tesla.

В настоящее время выпущена последняя версия CUDA 5.5, в которой появились некоторые новые возможности, например:

- MPS (Multi-Process Service) разрешает нескольким процессам в MPI-программе прозрачно пользоваться одной и той же GPU c Compute Capavility 3.5;

- добавлена поддержка ARMv7;

- репозитории для Ubuntu 12.04/12.10, OpenSUSE 12.2, SLES 11, Fedora 18, RHEL 6;

- обновлены библиотеки CUFFT, CUPTI, CURAND, CUSPARSE, Thrust;

- под MacOS в качестве компилятора используется Clang;

- отлаживать программы с помощью cuda-gdb теперь возможно на одной видеокарте, если ее Compute Capavility 3.5;

- поддерживается удаленная отладка;

- стало возможной отладки MPI-приложений;

- Visual Profiler поддерживает профилирование программ с динамическим параллелизмом.

Основные характеристики платформы NVIDIA CUDA:

- унифицированное программно-аппаратное решение для параллельных вычислений на видеочипах NVIDIA;

- большой набор поддерживающих решений, от мобильной до мультичиповой;

- стандартные языки программирования C;

- стандартные библиотеки численного анализа FFT (быстрое преобразование Фурье) и BLAS (линейная алгебра);

- оптимизированный обмен данными между CPU и GPU;

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

- поддержка 32- 64-битных операционных систем: Windows XP, Windows 7/8, Windows Vista, Linux и MacOS X;

- возможность разработки на низком уровне.

Графический конвейер, с точки зрения программистов, считается набором стадий обработки. Блок обработки геометрии генерирует треугольники, а блок движков растеризации генерирует пиксели, изображенные на мониторе. Традиционная модель программирования GPGPU указана на рисунке 1.

Рисунок 1 - Традиционная модель программирования GPGPU

Использование GPGPU для вычислений общего назначения имеют ограничения в виде слишком большой сложности. Есть и другие ограничения, так как пиксельный шейдер всего лишь формула зависимости итогового цвета от его координаты, а язык пиксельных шейдеров это язык записи этих формул с Си-подобным синтаксисом [3].

Программно-аппаратные архитектуры для вычисления на GPU компании NVIDIA отличается от прошлых моделей GPGPU тем, что позволяет написать программы для GPU на стандартном языке C со стандартным синтаксисом, указателями и необходимостью к минимальным расширениям для доступа к вычислительным ресурсам видеочипов. NVIDIA CUDA существует независимо от графических API, и обладают некоторыми особенностями, предназначенными только для вычисления общего значения.

Технология CUDA включает в себя два API: высокого «CUDA Runtime API» и низкого «CUDA Driver API» уровней, но в одной программе совместное использование обоих невозможно, необходимо использовать или один или другой. Технология высокого уровня работает «сверху» низкого уровня, где все вызовы runtime API компилируется в простые инструкции, обрабатываемые низкоуровневым Driver API. Но даже API высокого уровня предполагает знания об устройстве и работе видеочипов NVIDIA, слишком высокоуровневой абстракции там нет. Принцип указан на рисунке 2.

Рисунок 2 - Принцип разделения на уровни

Есть и ещё один уровень, даже более высокий -- две библиотеки:

CUBLAS это CUDA вариант Basic Linear Algebra Subprograms (BLAS), необходимый для вычисления задач линейной алгебры и использования прямого доступа к ресурсам GPU;

CUFFT это CUDA вариант библиотек Fast Fourier Transform для расчёта ускоренного преобразования Фурье, широко используемого при обработке сигналов. Поддерживается следующие типы преобразований: complex-complex (C2C), real-complex (R2C) и complex-real (C2R)[3].

Разберемся в этих библиотеках подробнее. CUBLAS - это переведённые на язык CUDA стандартные алгоритмы линейной алгебры, на данный момент поддерживается только определённый набор основных функций CUBLAS. Библиотекой очень легко пользоваться: необходимо создать матрицу и векторные объекты в используемой памяти видеокарты, заполнить её данными, вызвать нужные функции CUBLAS, и загрузить появившиеся результаты из видеопамяти обратно в системную память. CUBLAS применяет специальные функции для создания и уничтожения объектов в памяти GPU, также и для чтения и записи данных в эту память. Способствующие функции BLAS: уровней 1, 2 и 3 для действительных чисел, где первый уровень CGEMM для комплексных. Первый уровень - это векторно-векторные операции, Второй уровень - векторно-матричные операции, Третий уровень - матрично-матричные операции.

CUFFT это CUDA вариант функции ускоренного преобразования Фурье - широко используемого и очень важной при анализе сигналов, фильтрации и т.п. CUFFT предоставляет простой интерфейс для эффективного вычисления FFT на видеочипах производства NVIDIA без необходимости в разработке собственного варианта FFT для GPU. CUDA вариант FFT поддерживает 1D, 2D, и 3D преобразования комплексных и действительных данных, пакетное исполнение для нескольких 1D трансформаций в параллели, размеры 2D и 3D трансформаций могут быть в пределах [2, 16384], для 1D поддерживается размер до 8 миллионов элементов. nvidia cuda программирование

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

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

Литература

1 Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. - М.: ДМК Пресс, 2010. - 232 с.

2 Боресков А.В., Садовничий В.А. Параллельные вычисления на GPU. Архитектура и программная модель CUDA: Учеб. пособие - Изд-во Московского университета, 2012. - 336 с.

3 Берилло А. NVIDIA CUDA - неграфические вычисления на графических процессорах// Информационный ресурс сети интернетIXBT.com, 23.09.2008 г. - http://www.ixbt.com/video3/cuda-1.shtml.

Размещено на Allbest.ru

...

Подобные документы

  • Сравнение центрального и графического процессора компьютера в параллельных расчётах. Пример применения технологии CUDA для неграфических вычислений. Вычисление интеграла и сложение векторов. Технические характеристики ПК, применяемого для вычислений.

    курсовая работа [735,9 K], добавлен 12.07.2015

  • Программно-аппаратный комплекс производства компании Nvidia. Код для сложения векторов, представленный в CUDA. Вычислительная схема СPU с несколькими ядрами SMP. Выделение памяти на видеокарте. Проведение синхронизации работы основной и GPU программ.

    презентация [392,5 K], добавлен 14.12.2013

  • Загальна термінологія CUDA. Структура NVIDIA CUDA, особливості створення, принципи оптимізації програм. Проблеми CUDA. Основні поняття і модель програмування, демонстрація технології CUDA на прикладі підрахунку CRC32-коду. Мінімальні вимоги до програми.

    курсовая работа [4,5 M], добавлен 14.05.2012

  • Еволюція GPU та поява GPGPU. OpenCL – відкритий стандарт для паралельного програмування гетерогенних систем. Сутність та особливості технології Nvidia CUDA. Програмно-апаратна платформа CUDA. Програмування за допомогою CUDA SDK. Огляд архітектури Fermi.

    курсовая работа [3,0 M], добавлен 09.06.2012

  • История развития графических адаптеров и их характеристики. Конкуренция изготовителей ATI и NVIDIA как "двигатель прогресса" графических адаптеров. Обзор основных моделей: ATI Radeon, Nvidia GeForce FX. Критерии выбора графических адаптеров при покупке.

    реферат [134,7 K], добавлен 14.11.2013

  • Преимущества архитектуры CUDA по сравнению с традиционным подходом к организации вычислений общего назначения посредством возможностей графических API. Создание CUDA проекта. Код программы расчёта числа PI и суммирования вектора CPU, ее технический вывод.

    курсовая работа [1,4 M], добавлен 12.12.2012

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

    контрольная работа [102,7 K], добавлен 25.12.2014

  • История видеокарт, их назначение и устройство. Принципы обеспечения работы графического адаптера. Характеристики и интерфейс видеокарт. Сравнительный анализ аналогов производства компаний NVIDIA GeForce и AMD Radeon. Направления их совершенствования.

    контрольная работа [295,6 K], добавлен 04.12.2014

  • Изучение особенностей операционной системы, набора программ, контролирующих работу прикладных программ и системных приложений. Описания архитектуры и программного обеспечения современных операционных систем. Достоинства языка программирования Ассемблер.

    презентация [1,3 M], добавлен 22.04.2014

  • Знакомство с историей развития многопроцессорных комплексов и параллельных вычислений. Персональные компьютеры как распространенные однопроцессорные системы на платформе Intel или AMD, работающие под управлением однопользовательских операционных систем.

    презентация [1,1 M], добавлен 22.02.2016

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

    курсовая работа [586,6 K], добавлен 18.12.2011

  • Порівняльне тестування відеоадаптерів фірм Nvidia GeForce та AMD Radeon. Призначення та основні типи відеоадаптерів. Використання логічних пробників. Вимірювання номінальної напруги, струму, температури. Основні вимоги безпеки під час експлуатації ЕОМ.

    курсовая работа [1,6 M], добавлен 02.11.2014

  • Характеристика сущности, назначения, функций операционных систем. Отличительные черты их эволюции. Особенности алгоритмов управления ресурсами. Современные концепции и технологии проектирования операционных систем, требования, предъявляемые к ОС XXI века.

    курсовая работа [36,4 K], добавлен 08.01.2011

  • Технология распределенных вычислений CORBA, взаимодействие компонентов и архитектура. Основное назначение CORBA и COM. Поддержка операционных систем, предлагаемые службы и масштабируемость. Формальное описание архитектуры и проблемы ее реализации.

    курсовая работа [89,3 K], добавлен 02.12.2013

  • Принцип работы ядра процессора, типы архитектур ядер операционных систем. Сокет(Socket), кэш-память, контроллер ОЗУ, северный мост. Внутренняя архитектура процессоров Intel и AMD: расшифровка названий, технологии процессоров, сравнение производительности.

    реферат [214,9 K], добавлен 05.05.2014

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

    дипломная работа [2,4 M], добавлен 02.06.2013

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Основы методологии мониторов и устройства жесткого диска. Планирование работы дисков с использованием мониторов. Теоретические основы параллельного программирования. Микропроцессорная реализация параллельных процессов на основе технологии мониторов.

    дипломная работа [3,5 M], добавлен 08.07.2012

  • Синтез комбинационных схем, построение простых операционных устройств. Запоминающие устройства с прямым доступом. Операционные устройства для выполнения умножения. Изучение команд MMX процессоров Intel. Программа для выполнения матричных вычислений.

    контрольная работа [923,5 K], добавлен 05.07.2014

  • Основы программирования в операционной системе Windows. Создание процессов в 32-битных операционных системах. Основное отличие дескриптора от идентификатора. Понятие критической секции. Основы вызова API-функций. Методы многозадачного программирования.

    курсовая работа [501,1 K], добавлен 18.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.