- •Аннотация
- •Оглавление
- •Введение
- •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.1) и их применение в современных суперкомпьютерах (пп.1.2). В подразделах 1.2.3 и 1.3 подробно рассмотрены современные технологии и стандарты разработки GPGPU-приложений.
1.1. Этапы развития графических ускорителей и их устройство
В данном подразделе исследуются архитектуры современных графических процессоров. Рассмотрены вопросы от устройства потоковых мультипроцессоров до подсистемы памяти графических ускорителей.
1.1.1. Основная терминология и устройство графического адаптера
Ниже приведён список терминов, которые используются в данной роботе:
Графический ускоритель (Graphicsaccelerator) – со-процессор, графический адаптер, используемый для вычислений общего назначения, на который центральный процессор может отсылать (выгружать) данные и запускать выполнение участков кода. Иногда, для краткости, будем просто говоритьускоритель. Абстрагируясь от внутреннего устройства графического адаптера, подускорителем будем понимать GPU и память ускорителя. Устройство графического адаптера описано ниже в этом разделе.
Память ускорителя – энергозависимая память графического адаптера (видеопамять), логически или физически отделённая от памяти хоста.
Хост (Host) – центральный процессор (CPU) и его память. В этом понимании, центральный процессор управляет участками кода, которые выполняются на ускорителе, и данными, которые, выгружаются на ускоритель. Память хоста – ОЗУ.
CUDA(ComputeUnifiedDeviceArchitecture) – программно-аппаратная архитектура параллельных вычислений от компанииNVIDIA, позволяющая увеличить вычислительную производительность благодаря использованию GPU (см. раздел 1.2.3). Для программирования используются языкиC/C++ иFortran.
GPU (GraphicsProcessingUnit) – графический процессор, часть графического ускорителя; специализированная электронная схема (чип).
GPGPU (General‑Purpose Computing on Graphics Processing Units) – подход к использованию GPU, который обычно обрабатывает компьютерную графику, для вычислений общего назначения, которые традиционно обрабатываются центральным процессором (см. раздел 1.2.1).
Гибридная вычислительная система – система с гетерогенной (неоднородной) аппаратной вычислительной структурой. Вычислительными блоками такой системы могут быть центральный процессор (CPU) и, например, графический процессор (GPU).
OpenCL(OpenComputeLanguage) – открытый язык вычислений; фреймворк для написания параллельных компьютерных программ. Во фреймворкOpenCLвходят язык программирования, базированный на стандартеC99 иAPI. OpenCL обеспечивает параллелизм на уровне инструкций и на уровне данных и является реализацией подхода GPGPU. OpenCL является полностью открытым стандартом, его использование не облагается лицензионными отчислениями.OpenCLбыл разработанAppleInc. иKhronosGroupв 2008 году и поддерживается компаниями, в числе которых AMD, Intel, NVIDIA, ARM и другие. Последняя версия – 2.0, выпущена в июле 2013 года.
OpenACC– открытый стандарт, описывающий набор директив для написания гетерогенных программ, задействующих как центральный, так и графический процессор (cм. раздел 1.3). Используемые языки:C/C++ иFortran. По синтаксису схож сOpenMP. Стандарт был разработан группой, в которую вошлиCAPS,Cray,NVIDIAиPGIв 2011 году. Последняя версия – 2.0a, выпушена в августе 2013 года.
Фреймворк (Framework) – каркас, структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.
API(ApplicationProgrammingInterface) – интерфейс программирования приложений; набор готовых классов, процедур, функций, структур и констант, предоставляемых библиотекой или сервисом для использования во внешних программных продуктах.
Директива – специально отформатированное предложение, которое интерпретируется компилятором и используется для указания необходимого поведения программы или увеличения информации о нём.
Далее, рассмотрим устройство графического адаптера. Ниже приведены его составные части:
графический процессор (Graphicsprocessingunit,GPU) – основная часть графического адаптера. СовременныеGPUочень эффективны при обработке компьютерной графики, и их параллельная структура делает их более эффективными, чем центральный процессор для алгоритмов, где обработка больших блоков данных осуществляется параллельно;
видеоконтроллер;
система охлаждения;
ПЗУ (VideoROM);
ОЗУ (Видеопамять) – играет роль буфера, в котором хранится информация, генерируемая и постоянно изменяемая графическим процессором.
RAMDAC;
интерфейсы вывода;
шина;
Более подробно устройство графического адаптера приведено в Приложении 1 (раздел 1.1).