Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Исследование параллелизма при решении двухточечной краевой задачи на графических ускорителях NVIDIA (магистерская диссертация).docx
Скачиваний:
66
Добавлен:
28.06.2014
Размер:
1.59 Mб
Скачать

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).