
- •Аннотация
- •Оглавление
- •Введение
- •1. Графические ускорители – как эффективный путь повышения производительности вычислительных архитектур
- •1.1. Этапы развития графических ускорителей и их устройство
- •1.1.1. Основная терминология и устройство графического адаптера
- •1.1.2. Архитектура современныхGpu
- •1.2. Подход к использованию графических ускорителей для вычислений общего назначения
- •1.2.1.GpgpUподход
- •1.2.2. Гибридные вычислительные системы
- •1.2.3. Программная модельCuda
- •1.3.OpenAcc. Новейший стандарт разработкиGpgpu-приложений
- •1.3.1. Возможности стандарта
- •1.3.2. Модель выполнения
- •1.3.3. Модель памяти
- •1.4. Выводы по разделу 1
- •2. Постановка задачи магистерской диссертации
- •2.1. Цели и задачи исследования
- •2.2. Математическая постановка задачи решения трехдиагональной системы линейных уравнений методом блочной прогонки
- •2.3. Разработка параллельного алгоритма для решения трехдиагональной системы линейных уравнений
- •2.4. Выводы по разделу 2
- •3. Реализация и исследование разработанного алгоритма
- •3.1. Структура параллельной программы и особенности реализации
- •3.2. Результаты тестирования
- •3.3. Анализ результатов
- •3.4. Выводы по разделу 3
- •Заключение
- •Список использованных источников
- •Приложение 1. История развития графических ускорителей и их устройство
- •1.1. Устройство графического адаптера
- •1.2. Рынок графических адаптеров
- •1.3. АрхитектураGpugt200
- •1.4. Современное положение дел
- •Приложение 2. Основная часть программного кода разработанного приложения
1.1.2. Архитектура современныхGpu
Рассмотрим архитектуру GPUна примере чипаGT200, который появился в 2008 году. Базовый элементGPUNVIDIA– ядро, называемоеSP(singleprocessingcore). КаждыйSP, состоит из двух арифметико-логических устройств (АЛУ) и одного математического сопроцессора для операций с плавающей точкой (floating point unit,FPU).SPне имеет своего кэша, так как в силу того, что самSPпригоден только для выполнения большого количества математических операций, его функциональность ограничена. Набор инструкций у такого процессора гораздо меньше, чем у центрального процессора.NVIDIAв своихGPUобъединяет большое количество такихSPв массив (см. рис. 1.1). На рисунке 1.1 представлен потоковый мультипроцессор (Streaming Multiprocessor,SM):
Рисунок 1.1. Потоковый мультипроцессор (SM)
SM– это массивSP(в данном случае 8SP) [2], а так же 2 специальных процессора (SpecialFunctionUnits,SFU). ВSMесть диспетчер исполнения командMT, предназначенный для распределения нагрузки между всемиSPиSFUв массиве. В дополнение к процессорным ядрам, вSMтак же присутствуют кэш инструкций и кэш данных очень маленького объёма, и общая память объёмом 16Кб.
Потоковые мультипроцессоры SMобъединяются в массивы, называемыеTPC(Texture/ProcessorCluster). ВGPUGT200 одинTPCсостоит из трёхSM. NVIDIA, разрабатывая архитектуруGPU, сделала её модульной, так, не ограничивая общности, следует сказать, что одинTPCможет состоять из любого числаSM.TPCсостоит из блоковSM, некоторой управляющей логики и текстурного блока. Текстурный блок включает в себя логику фильтрации и адресации текстур и кэшL1.
Продолжая модульную концепцию, массив потоковых процессоров (StreamingProcessorArray,SPA) состоит из некоторого числаTPC(см. рис. 1.2).
В случае GT200,SPAсостоит из 10TPC, каждыйTPCсостоит из трёхSM, каждый из которых состоит из восьмиSM. В общем счёте,SPAGT200 состоит из 240 ядерSP.
Рисунок 1.2. Массив потоковых процессоров (SPA) в GPUGT200
Наконец, GT200 изготовлен по 55 нм техпроцессу и состоит из 1,4 миллиарда транзисторов, размер кристалла равен 470 мм2.
Со времени выхода GT200 развитиеGPUсделало большой шаг вперед. В 2013 году вышел чипGK110, который предложил усовершенствованную архитектуру и увеличенную производительность. ВGK110 вместо блоковTPCиSMтеперь появились блоки нового поколения, называемыеSMX(NextGenerationStreamingMultiprocessor). АрхитектураSMXтребует дополнительного внимания (см. рис. 1.3).
Теперь, один SMXблок содержит 192 ядраCUDAконвейерной организации [3] (на рис. 1.3 обозначены зелёным цветом). Так же присутствуют 64 сопроцессораDPUnit(аналогFPU) для операций с числами с плавающей точкой двойной точности, согласно стандартуIEEE754-2008 (на рис. 1.3 обозначены желтым цветом). Как и прежде, присутствуют 32 специальных процессораSFUдля трансцендентных операций. К ним добавилось 32 блока инструкций получения/записи в память (Load/Store,LD/ST).
Рисунок 1.3. Потоковый мультипроцессор нового поколения (SMX)
Все вычислительные блоки соединяются посредством шины InterconnectNetworkс общей памятью и кэшемL1, общим объёмом 64Кб (см. Приложение 1, раздел 1.4.), кэшем данных, объёмом 48Кб и текстурными блоками.
Как видно, один потоковый мультипроцессор SMXимеет более сложную организацию, чем было вGPUпрошлых поколений, он сдержит гораздо больше ядерCUDAи других функциональных блоков. Поднимаясь на уровень выше, блокиSMXобъединяются на кристаллеGPUв количестве до 15 штук, что даёт в сумме 2880 ядерCUDA. Подсистема памятиGK110 включает кэшL2, объёмом 1536Кб.
Подробнее архитектура современных GPUна примереGT200 иGK110 описана в Приложении 1 (разделы 1.3 и 1.4.). В разделе 1.2. Приложения 1 рассматриваются этапы развития рынка графических адаптеров.