МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (национальный исследовательский университет) (национальный исследовательский университет) Факультет прикладной математики.

Презентация:



Advertisements
Похожие презентации
Факультет прикладной математики и физики Кафедра вычислительной математики и программирования МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (национальный исследовательский.
Advertisements

Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Санкт-Петербургский государственный университет информационных технологий, механики и оптики Санкт-Петербург 2009 Санкт-Петербургский государственный университет.
Часть I: Введение в CUDA Александр Межов Ассистент кафедры Информатики 30 сентября 2011 Кафедра Информатики.
Архитектура ЭВМ (лекция 7) проф. Петрова И.Ю. Курс Информатики.
Санкт-Петербургский государственный университет информационных технологий, механики и оптики Санкт-Петербург 2009 Санкт-Петербургский государственный университет.
Применение конвертируемых режимов адресации для повышения производительности сопроцессоров цифровой обработки сигналов в составе многоядерной СнК Пантелеев.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Вычисления Общего Назначения на Графическом Ускорителе.
Трансляция операций с массивами в код для современных графических процессоров Сахарных Н.А., Адинец А.В. Научный руководитель Березин С.Б. Лаборатория.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Введение в параллельную обработку. Уровни параллелизма в процессорах Параллелизм данных (DLP – Data Level Parallelism) Параллелизм команд (ILP – Instruction.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Лекция 1. Архитектура и программирование массивно- параллельных вычислительных систем Summer of coding. CUDA course. Борисов Александр
Микропроцессоры и микроконтроллеры Управление простыми электро-механическими устройствами и датчиками (MCS51, PIC,AVR) –Минимальные размеры памяти –Примитивная.
Лекторы: Боресков А.В. (ВМиК МГУ) Харламов А. (NVidia) Архитектура и программирование массивно- параллельных вычислительных систем.
Компьютерная графика. Технологии 3D графики. DirectX, OpenGL, Glide, PhysX.
МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (национальный исследовательский университет) (национальный исследовательский университет) Факультет прикладной математики.
Московский Физико-Технический Институт Оптимизация методов умножения матриц библиотеки линейной алгебры для ВК Эльбрус-3M1 и Эльбрус-90 микро Выполнил:
Транксрипт:

МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (национальный исследовательский университет) (национальный исследовательский университет) Факультет прикладной математики и физики Кафедра вычислительной математики и программирования Выполнил: Семенов С.А. Руководитель: Ревизников Д.Л. Лекция 1 « Введение в дисциплину. История развития графических процессоров »

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 2 Несколько слов о курсе Программирование графических процессоров - спецкурс 16 лекций, 9 пар семинаров 1 неделя – лекция 2 неделя - лабораторная 3 неделя - семинар Цель занятий: Начать быстро программировать на CUDA Написать и сдать лабораторные 4 лабораторных Отчетность по курсу - Задания сдаются на семинарах - Либо по почте До понедельника 8.00 со дня лабораторной, на котором задание выдано Если у вас не получается – дайте нам знать

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 3 Введение Устройства для превращения персональных компьютеров в маленькие суперкомпьютеры Транспьютеры Видеокарты Специализированные векторные возможности (SSE2 и SSE3) Области применения параллельных расчётов на GPU Первые попытки применения расчётов на GPU GPGPU CUDA (Compute Unified Device Architecture) и CTM (Close To Metal или AMD Stream Computing) Возможности NVIDIA CUDA Преимущества и ограничения CUDA Состав NVIDIA CUDA

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 4 Специализированные векторные возможности (SSE2 и SSE3) SSE (Streaming SIMD Extensions потоковое SIMD расширение) У процессоров начиная с ММХ существуют векторные регистры: SSE (Streaming SIMD Extensions потоковое SIMD расширение) это набор 128 битных регистров ЦПУ, в которые можно запаковать 4 32 юнитных скаляра и проводить над ними операции одновременно. Существует SSE асемблер – именно в виде асемблера. Тут вам прийдется, самому аллоцировать регистры, заниматься загрузкой данных из памяти и т.д. Существуют так же SSE intrinsic функции – это функции которые реализуют ту или иную функциональность средствами се. SSE (англ. Streaming SIMD Extensions, потоковое SIMD-расширение процессора) это SIMD (англ. Single Instruction, Multiple Data, Одна инструкция множество данных) набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III как ответ на аналогичный набор инструкций 3DNow от AMD, который был представлен годом раньше. Первоначально названием этих инструкций было KNI Katmai New Instructions (Katmai название первой версии ядра процессора Pentium III). SSE2 (англ. Streaming SIMD Extensions 2, потоковое SIMD-расширение процессора) это SIMD (англ. Single Instruction, Multiple Data, Одна инструкция множество данных) набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium 4. SSE2 расширяет набор инструкций SSE с целью полностью вытеснить MMX. Набор SSE2 добавил 144 новые команды к SSE, в котором было только 70 команд. SSE3 (PNI Prescott New Instruction) третья версия SIMD-расширения Intel, потомок SSE, SSE2 и MMX. Впервые представлено 2 февраля 2004 года в ядре Prescott процессора Pentium 4. В 2005 AMD предложила свою реализацию SSE3 для процессоров Athlon 64 (ядра Venice, San Diego и Newark). SSE4 новый набор команд микроархитектуры Intel Core, впервые реализованный в процессорах серии Penryn (не следует путать с SSE4A от AMD).

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 5 Разница между CPU и GPU в параллельных расчётах

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 6 Альтернатива классическому подходу Строить систему рассчитанную на cachemiss а не на cache-hit Вместо кэша и сложных АЛУ отдадим эту площадь кристалла под упрощённые АЛУ, имеющие общую память на кристалле Хорошо: Латентность доступа к памяти устанавливает однократную систематическую задержку между потоком исходных данных и результатов Плохо: Программист обязан тщательно рассчитывать размещение алгоритма на исполняющих элементах, продумывать стратегии доступа к памяти

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 7 Частоты CPU intel 2004 г. - Pentium 4, 3.46 GHz 2005 г. - Pentium 4, 3.8 GHz 2006 г. - Core Duo T2700, 2333 MHz 2007 г. - Core 2 Duo E6700, 2.66 GHz 2007 г. - Core 2 Duo E6800, 3 GHz 2008 г. - Core 2 Duo E8600, 3.33 Ghz 2009 г. - Core i7 950, 3.06 GHz

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 8 Существующие многоядерные системы Легко видно, что роста частоты практически нет –Энерговыделение ~ четвертой степени частоты –Ограничения техпроцесса Таким образом, повышение быстродействия следует ждать именно от параллельности. Уже давно CPU используют параллельную обработку для повышения производительности – Конвейер – Multithreading – SSE

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 9 Эволюцию GPU Voodoo – растеризация треугольников, наложение текстуры и буфер глубины Быстрый рост производительности Добавление новых возможностей Мультекстурирование RivaTNT2 T&L Вершинные программы (шейдеры) Фрагментные программы (GeForce FX) Текстуры с floating-point значениями

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 10 Шейдеры Работают с 4D float векторами Специальный асемблер Компилируется драйвером устройства Отсутствие переходов и ветвлений вводились как vendor решения Появление шейдерных языков высокого уровня (Cg, GLSL, HLSL) Поддержка ветвлений и циклов (GeForce 6xxx) Появление GPU превосходящие CPU в 10 раз по производительности

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 11 Язык Cg Разработан nVidia совместно с Microsoft (такой же по сути язык от Microsoft называется HLSL, включён в DirectX 9). Cg расшифровывается как C for Graphics. Язык действительно очень похож на C, он использует схожие типы (int, float, а также специальный 16-битный тип с плавающей запятой half). Поддерживаются функции и структуры. Язык обладает своеобразными оптимизациями в виде упакованных массивов (packed arrays) объявления типа «float a[4]» и «float4 a» в нём соответствуют разным типам. Второе объявление и есть упакованный массив, операции с упакованным массивом выполняются быстрее, чем с обычными. Несмотря на то, что язык разработан nVidia, он без проблем работает и с видеокартами ATI. Однако следует учесть, что все шейдерные программы обладают своими особенностями, которые следует получить из специализированных источников.

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 12 Языки GLSL, HLSL Шейдерный язык OpenGL носит название GLSL (The OpenGL Shading Language). GLSL основан на языке ANSI C. Большинство возможностей языка ANSI C сохранено, к ним добавлены векторные и матричные типы данных, часто применяющиеся при работе с трехмерной графикой. В контексте GLSL шейдером называется независимо компилируемая единица, написанная на этом языке. Программой называется набор откомпилированных шейдеров, связанных вместе. Высокоуровневый шейдерный язык DirectX (HLSL High Level Shader Language) Является надстройкой над DirectX ASM. По синтаксису сходен с C, позволяет использовать структуры, процедуры и функции.

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 13 GPGPU Использование GPU для решения не графических задач Вся работа с GPU идет через графический API (OpenGL, D3D) Программы используют сразу два языка – один традиционный (С++) и один шейдерный Ограничения, присущие графическим API

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 14 Есть ли выигрыш?

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 15 Где он наблюдается? Высоко количество операций на одно чтение исходных данных Одна программа исполняется для массивов данных (SIMD) Аппаратная реализация традиционно ориентирована на обработку графических данных: Данные – матрицы Отсутствие ветвлений Каждый из результатов вычисляется из подмножества данных Плавающая точка

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 16 Области эффективного применения CUDA MD симуляция (non-bonded force calc): 8-16x Сеточные модели (явные схемы) Нейронные сети Финансовые прогнозы Шифрование, кодирование, прямой перебор Флуоресцентная микроскопия: 12x Электростатика (прямое и многоуровневое суммирование Кулона): x и 7x

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 17 Области применения параллельных расчётов на GPU

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 18 Тренировка MLP

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 19 Результаты MLP Тренировка MLP акустической модели для распознавателей речи Объём тренировочных данных для одной эпохи ~ 100 часов речи (8kHz) Сеть 150x1000x60 сигма-нейроны Реализован классический алгоритм backpropagation X10 ускорение вычислений по сравнению с CPU (3 часа 30 мин )

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 20 CUDA = Compute Unified Design Architecture Многократное ускорение в каждой конкретной задаче достигается в результате усилий программиста Существовали ранние попытки использования графических карт для научных рассчётов Проблема – алгоритмы должны были быть реализованы на специальном шейдерном языке (shade language) Shade Language разработан и подходит для графики Для облегчения работы с алгоритмами общего назначения (GPGPU=General Purpose computing on Graphical Processing Units) компания NVIDIA выдвинула иннициативу создания аппаратно/программной архитектуры общего назначения

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 21 CUDA общие положения GPU – сопроцессор для CPU (хоста) У GPU есть собственная память (device memory) GPU способен одновременно обрабатывать множество процессов (threads) данных одним и тем же алгоритмом Для осуществления расчётов при помощи GPU хост должен осуществить запуск вычислительного ядра (kernel), который определяет конфигурацию GPU в вычислениях и способ получения результатов (алгоритм) Процессы GPU (в отличие от CPU) очень просты и многочисленны (~ 1000 для полной загрузки GPU)

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 22 Возможности NVIDIA CUDA унифицированное программно-аппаратное решение для параллельных вычислений на видеочипах NVIDIA большой набор поддерживаемых решений, от мобильных до мультичиповых стандартный язык программирования Си стандартные библиотеки численного анализа FFT (быстрое преобразование Фурье) и BLAS (линейная алгебра) оптимизированный обмен данными между CPU и GPU взаимодействие с графическими API OpenGL и DirectX поддержка 32- и 64-битных операционных систем: Windows XP, Windows Vista, Linux и MacOS X возможность разработки на низком уровне

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 23 Преимущества и ограничения CUDA

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 24 Преимущества CUDA перед традиционным подходом к GPGPU вычислениям интерфейс программирования приложений CUDA основан на стандартном языке программирования Си с расширениями, что упрощает процесс изучения и внедрения архитектуры CUDA CUDA обеспечивает доступ к разделяемой между потоками памяти размером в 16 Кб на мультипроцессор, которая может быть использована для организации кэша с широкой полосой пропускания, по сравнению с текстурными выборками более эффективная передача данных между системной и видеопамятью отсутствие необходимости в графических API с избыточностью и накладными расходами линейная адресация памяти, и gather и scatter, возможность записи по произвольным адресам аппаратная поддержка целочисленных и битовых операций

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 25 Основные ограничения CUDA отсутствие поддержки рекурсии для выполняемых функций минимальная ширина блока в 32 потока закрытая архитектура CUDA, принадлежащая NVIDIA

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 26 Решения с поддержкой NVIDIA CUDA

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 27 Состав NVIDIA CUDA CUDA включает два API: высокого уровня (CUDA Runtime API) и низкого (CUDA Driver API) CUBLAS CUDA вариант BLAS (Basic Linear Algebra Subprograms), предназначенный для вычислений задач линейной алгебры и использующий прямой доступ к ресурсам GPU; CUFFT CUDA вариант библиотеки Fast Fourier Transform для расчёта быстрого преобразования Фурье, широко используемого при обработке сигналов. Поддерживаются следующие типы преобразований: complex-complex (C2C), real-complex (R2C) и complex-real (C2R).

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 28 Выводы Представленная компанией NVIDIA программно-аппаратная архитектура для расчётов на видеочипах CUDA хорошо подходит для решения широкого круга задач с высоким параллелизмом. CUDA работает на большом количестве видеочипов NVIDIA, и улучшает модель программирования GPU, значительно упрощая её и добавляя большое количество возможностей, таких как разделяемая память, возможность синхронизации потоков, вычисления с двойной точностью и целочисленные операции. CUDA это доступная каждому разработчику ПО технология, её может использовать любой программист, знающий язык Си. Придётся только привыкнуть к иной парадигме программирования, присущей параллельным вычислениям. Но если алгоритм в принципе хорошо распараллеливается, то изучение и затраты времени на программирование на CUDA вернутся в многократном размере.

Московский авиационный институт (национальный исследовательский университет ) Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 29