Обзор методов параллельных вычислений

Терехина И.О., Вихман В.В., Копысов П.Е.

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

Ключевые слова: HPC, параллельные вычисления, CPU, GPU, кластер, сервер.

Review of parallel computing’s methods

Terekhina I.O., Vikhman V.V., Kopysov P.E.

The article is dedicated to parallel computing. Provides a brief description of existing architectures and comparative analysis of parallel computation based on the CPU and GPU.

Keywords: HPC, parallel computing, CPU, GPU, cluster, server.

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

Кластер — это набор вычислительных узлов, связанных высокоскоростной сетью (интерконнектом) и объединенных в логическое целое специальным программным обеспечением.[1] Основной особенностью работы с кластером является то, что для конечного пользователя она выглядит неотличимо от работы на локальной машине. Это реализуется на уровне программных протоколов.

Для решения серьезных научных задач применяется специальные высокопроизводительные кластеры High-performance computing cluster, особенно эффективные в операциях над числами с плавающей точкой и обладающие высокой пропускной способностью интерконнекта.[2]

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

Долгое время абсолютно все вычисления выполнялись на центральном процессорном элементе,  потому как CPU проектировались ориентировано на максимальную производительность, но при выполнении лишь одного потока последовательных инструкций. Еще одной особенностью CPU является универсальность решаемых ими задач, при этом  доступ к памяти с данными и инструкциями происходит преимущественно случайным образом.[3]

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

Рост производительности CPU был основан на увеличении тактовой частоты и увеличении числа транзисторов. Однако, было замечено, при частоте более 3,8 ГГц чипы начинали перегреваться. Таким образом, эволюция CPU уперлась в следующие проблемы:[4]

§        повышение потребляемой мощности и увеличение выброса тепла, за счет возрастания тока утечки транзисторов, при уменьшении размеров кристалла и повышении тактовой частоты;

§        задержки при обращении к памяти снижают производительность, несмотря на высокую тактовую частоту из-за несоответствия времени доступа возрастающим частотам;

§        использование последовательного потока вычислений неизбежно связано с ограничением, вызванным резистивно-емкостными задержками передачи сигналов, что является узким местом, связанным с повышением тактовой частоты.

Таким образом, появилась острая необходимость в поиске альтернативного способа повышения производительности.  

В начале 2000-х появилась теория, что многие научные расчеты во многом схожи с обработкой 3D-графики.[5]  Соответственно, появилась идея использовать мощность графического процессора для нужд центрального. Эта возможность была обусловлена особенностью архитектуры GPU.  Поскольку, GPU были ориентированы на обработку изображений, то в них уже  заложены значительные возможности по распараллеливанию задач.

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

В таблице представлены основные различия архитектур и возможностей CPU и GPU.[6]

CPU

GPU

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

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

Случайный доступ к памяти.

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

Не все имеют встроенные контроллеры памяти.

Несколько контроллеров памяти. Большая пропускная способность.

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

Исполнительные блоки занимают относительно мало места.

Основная площадь отдана под исполнительные блоки.

Большая часть транзисторов занята обработкой массивов данных.

Исполняет 1-2 потока вычислений на одно процессорное ядро.

Поддерживает до 1024 потоков на каждый мультипроцессор.

Переключение с одного потока на другой занимает сотни тактов.

Переключение занимает один такт.

Самостоятельное вычислительное устройство.

Изначально дополнительное вычислительное устройство.

Универсальность решаемых задач.

Показывают лучшие показатели в определенных областях вычислений.

 

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

 

Использованные источники:

1.     Компьютерра [Электронный ресурс] / Режим доступа:  http://old.computerra.ru/offline/2005/618/244051

2.     Википедия [Электронный ресурс] / Режим доступа: https://ru.wikipedia.org/wiki/Кластер_(группа_компьютеров)

3.     Компьютер Пресс [Электронный ресурс] / Режим доступа: http://compress.ru/article.aspx?id=23724

4.     Слово о ПК и PC [Электронный ресурс] / Режим доступа:  http://netler.ru/pc/cuda.htm

5.     Хакер [Электронный ресурс] / Режим доступа: http://xakep.ru/47507

6.     Параллельное программирование с использованием технологии CUDA. Учебное пособие [Электронный ресурс] / Режим доступа: http://edu.chpc.ru/cuda/mainse2.html#x5-40001.2