Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реферат. Пронченко.docx
Скачиваний:
23
Добавлен:
04.06.2015
Размер:
503.58 Кб
Скачать

Национальный Исследовательский Ядерный Университет «МИФИ»

Факультет Очно-Заочного (Вечернего) Обучения

Реферат на тему:

GPU вычисления. Серверное решение:

NVidia Tesla K20X / K20

Группа:

В6-123

Студент:

Пронченко А.О

2013

1. Что такое GPU вычисления?

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

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

Сочетание CPU + GPU стало весьма удачным за счет того, что CPU состоят из нескольких ядер, оптимизированных для последовательной обработки данных, в то время как GPU состоят из тысяч маленьких, более производительный ядер, созданных для параллельной обработки данных. Последовательные части кода обрабатываются на CPU, а параллельные части - на GPU.

Все графические процессоры NVIDIA: GeForce, Quadro и Tesla – поддерживают вычисления на GPU и параллельное программирование CUDA. Однако для рабочего процесса, при котором требуются надежность данных и общая производительность, компания рекомендует графические процессоры Tesla. 

  1.  

Графические процессоры Tesla созданы с нуля для ускорения научных вычислений и технических расчетов. Основанные на инновационных возможностях архитектуры Kepler, последние графические процессоры Tesla обеспечивают в три раза более высокую производительность по сравнению с архитектурой предыдущего поколения. Производительность вычислений операций с плавающей запятой с двойной точностью свыше 1 Терафлоп, при этом значительно усовершенствованы возможности программирования и энергоэффективность.

Tesla не может полностью заменить обычный универсальный процессор, но позволяет использовать вычислительный ресурс множества своих ядер для решения определенного круга ресурсоемких задач, которые позволяют производить независимую параллельную обработку данных (примерами таких задач могут служить: симуляция свёртывания молекул белка, секвенирование ДНК, моделирование погоды, анализ финансового риска и т. п.).

2. Кратко о CUDA.

Платформа параллельных вычислений CUDA® обеспечивает набор расширений для языков C и С++, позволяющих выражать как параллелизм данных, так и параллелизм задач на уровне мелких и крупных структурных единиц. Программист может выбрать средства разработки: языки высокого уровня, такие как C, C++, Fortran или же открытые стандарты, такие как директивы OpenACC. Платформа параллельных вычислений CUDA используется на сегодняшний день в тысячах приложений с GPU-ускорением и тысячах опубликованных научных статьях.

3. Графические процессоры NVIDIA Tesla. Сравнительные характеристики.

Системы Tesla впервые появились на рынке с выходом графического чипа NVIDIA восьмого поколения — G80. Tesla строится на базе обычных графических процессоров, но, в отличие от видеоускорителей, не имеет средств вывода изображения на дисплей. Являясь своего рода сопроцессором, Tesla может использоваться для создания вычислительных систем на базе персональных компьютеров, а также в составе серверов и вычислительных кластеров.

Ниже приведена сравнительная таблица графических ускорителей Tesla, основанных на новой архитектуре Kepler и на архитектуре Fermi.

Ключевые возможности

Tesla K20X

Tesla K20

Tesla K10

Tesla M2090

Tesla M2075

Тип GPU

1 Kepler GK110

2 Kepler GK104s

1 Fermi GPU

Область применения

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

Обработка сейсмических данных, обработка сигналов и изображений, видеоаналитика.

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

Пиковая производительность для вычислений двойной точности с плавающей запятой

1.31 Tf

1.17 Tf

0.19 Tf

(95 Гигафлоп на GPU)

0.665 Tf

0.515 Tf

Пиковая производительность для вычислений одинарной точности с плавающей запятой

3.95 Tf

3.52 Tf

4.577 Tf

(2.288 Tf на GPU)

1.331 Tf

1.030 Tf

Полоса пропускания памяти

250 GB / sec

208 GB / sec

320 GB / sec

(160 GB / sec на GPU)

177 Gb / sec

150 GB / sec

Размер памяти (GDDR5)

6 GB

5GB

8 GB

(4 GB на GPU)

6 GB

6 GB

Ядра CUDA

2688

2496

3072

(1536 на GPU)

512

448

4. Архитектура графического процессора Kepler gk110.

Графический процессор Kepler GK110 был создан специально для видеоускорителей Tesla, его основной задачей является максимальное увеличение возможностей параллельных вычислений. GK110 не только превосходит по этому параметру предыдущую архитектуру GPU Fermi – помимо этого значительно снижены потребление электричества и тепловыделение.

Полное исполнение Kepler GK110 включает в себя 15 потоковых мультипроцессоров (SMX – streaming multiprocessor) и 6 64-битных контроллеров памяти. К примеру, видеоускоритель Tesla K20X включает в себя 14 устройств SMX, а Tesla K20 – 13.

Основные особенности архитектуры, которые будут рассматриваться ниже, включают в себя:

- архитектуру SMX процессоров;

- улучшенную подсистему памяти, которая предоставляет новые возможности кэширования, большую пропускную способность, и новую полностью переделанную и более быструю реализацию ввода-ввода с использование динамической памяти с произвольным доступом (DRAM);

- поддержку на аппаратном уровне новых моделей программирования и их возможностей.

5. Архитектура smx процессоров.

В графическом процессоре Kepler GK110 каждый SMX процессор включает в себя 192 ядра CUDA одинарной точности, каждое из которых имеет полностью конвейерное арифметико-логическое устройство для работы с целыми числами и числами с плавающей запятой.

Одной из главных задач при создании процессора Kepler GK110 было увеличение мощности вычислений двойной точности, так как арифметика двойной точности является важнейшей во многих высокопроизводительных системах. GPU Kepler GK110 также имеет 32 устройства специального назначения (SFU – special function unit) для быстрых приблизительных вычислений трансцендентных выражений, причем их число возросло в 8 раз в сравнении с предыдущей архитектурой.

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

SMX разбивает каждый процесс на 32 параллельных процесса, называемых «скачка`ми» (warp). Каждый SMX процессор имеет 4 планировщика (warp scheduler) и 8 регистров команд, которые позволяют определять и исполнять конкурентно одновременно 4 «скачка». В архитектуре Kepler планировщик в каждом цикле работы выбирает 4 «скачка» и позволяет выполнить 2 независимых инструкции на каждом из «скачков». В отличие от предыдущей архитектуры, графический процессор GK110 позволяет исполнять в парах команд, в том числе и операции с плавающей запятой, которые до этого исполнялись отдельно и занимали весь цикл выполнения.

Помимо этого в конструкцию SMX процессоров были внесены изменения, целью которых является оптимизация работы планировщика, которая в себя включает:

- запись и учет задержек выполняемых программ;

- механизм анализа «скачков», который позволяет принимать решение о том, какой из «скачков» отрабатывать следующим, с целью повышения общей эффективности вычисления;

- выбор лучшей связки «скачков». То же самое, что и предыдущий пункт, но на более высоком уровне. То есть, если механизм анализа «скачков» работает «на лету», постоянно анализируя результаты, то механизм ранжирование блоков производит первичный анализ процесса выполнения.

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

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

Количество регистров, которые доступны процессу в GK110 было увеличено почти в четыре раза и составило 255 регистров на процесс. Это в свою очередь позволяет значительно реже обращаться к локальной памяти, что существенно сократило время обработки данных.

Другим улучшением стал механизм перемешивания команд, которые позволяет «скачкам» процесса обмениваться данными. Раньше для обмена данными между «скачками» требовалось отдельно сохранить и разгружать данные, используя общую память. Команды перемешивания позволяют «скачкам» брать данные непосредственно один из другого.

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

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

Атомарные операции — операции, выполняющиеся как единое целое либо не выполняющиеся вовсе. Атомарность операций имеет особое значение в многопроцессорных компьютерах (и многозадачных операционных системах), так как доступ к неразделяемым ресурсам должен быть обязательно атомарным. Атомарная операция открыта влиянию только одного потока.

Операции типа прибавления, поиска минимум\максимума и сравнения являются атомарными в том смысле, что операции чтения, изменения и записи данных происходит без прерывания другими процессами. Атомарные операции над памятью широко используются при параллельной сортировке, вычитании и создании структур данных без блокировки, которую могут вызвать другие процессы.

В графическом процессоре Kepler GK110 атомарные операции над памятью могут выполнять со скоростью операции глобальной загрузки, то есть без вычислений каких-либо предусловий. Такой подход позволяет использовать атомарные операции над памятью достаточно часто во внутренних циклических операциях ядра, например, при выявлении и решении конфликтов адресования памяти. Процессор Kepler GK110 поддерживает следующие 64-битные атомарные операции:

- atomicAdd - сложение;

- atomicCAS – сравнение с обменом;

- atomicExch – перемешивание;

- atomicMin – поиск минимума;

- atomicMax – поиск максимума;

- atomicAnd – логическое и;

- atomicOr – логическое или;

- atomicXor – логическое или-не;

Другие атомарные операции, которые не поддерживаются в явном виде, например, атомарные операции над числами с плавающей запятой, могут быть эмулированы с помощью операций сравнения с обменом (compare-and-swap или CAS). Сравнение с обменом — атомарная инструкция, сравнивающая значение в памяти с одним из аргументов, и в случае успеха записывающая второй аргумент в память.

В графическом процессоре выделенные устройства обработки текстур являются ценным ресурсом в программах, в которых требуется обработка и фильтрация графических данных. Пропускная способность при обработке текстур значительно увеличилась в сравнении с прошлой архитектурой – Fermi, теперь каждый SMX процессор содержит 16 устройства фильтрации текстур, что в 4 раза больше в сравнении с графическими процессорами Fermi.

Помимо этого, в Kepler изменился механизм управление текстурами. Раньше для того, чтобы ссылаться на текстуру, требовалось выделять для нее отдельный «слот» в фиксированной таблице привязок. Эта таблица значительно сокращала количество уникальных текстур, которые можно использовать во время работы, ограничивая их 128 число одновременно используемыми текстурами.

В Kepler для текстур не требуется выделять «слот», так как информация о них хранится в виде объекта в памяти, и аппаратная часть может обращаться к этим объектам по мере необходимости. Это решение снимает все ограничения на количество уникальных текстур, на которые может ссылаться компьютерная программа.